In this hands-on lab, you’ll create a Terraform module, publish the module to a private registry in Terraform Cloud, and create a configuration that leverages the module to deploy a secure storage account.
Learning Objectives
Successfully complete this lab by achieving the following learning objectives:
- Create a GitHub Repository for Your Module
Create a GitHub repository for your Terraform Module with the following properties:
- Use a name with the format
terraform-azurerm-<module name>
. - Ensure the repository is public.
- Add a Terraform git ignore.
- Include a readme file.
- Use a name with the format
- Author Your Terraform Module
- Clone your repository to the Infrastructure as Code workstation.
- Author a module that includes a
main.tf
,variables.tf
andoutputs.tf
file. - Include input variables for the
Resource Group Name
,Location
,Storage Account Name
, andEnvironment
. - Include a local variable for resource tags, set the Environment tag to the environment variable
Environment
. - Create a secure storage account resource that includes the a hardcoded values for the following:
- Set Public Network Access to be blocked
- Ensure the account tier is set to Standard
- Include variables in the secure storage account resource and set the tags using the local variable.
- Include an output variables for the Storage Account ID.
- Create a release in GitHub for your module.
- Publish Your Module to Your Private Registry
Import the module into your Terraform Cloud private registry.
- Author and Apply a Configuration Using the Module
- Author a Terraform configuration that uses the module to deploy a storage account.
Use the below provider configuration to avoid permissions issues when deploying your resources:
provider "azurerm" { features {} skip_provider_registration = true }