Introdução à Terraform
A ferramenta Terraform open-source IaC permite definir e provisionar a infraestrutura de nuvem usando uma linguagem de configuração de alto nível conhecida como HashiCorp Configuration Language (HCL). Terraform codifica a infraestrutura em arquivos de configuração que descrevem o estado desejado para sua infraestrutura. A Terraform pode gerenciar qualquer infraestrutura, como nuvens públicas, nuvens privadas e serviços SaaS, usando provedores Terraform.
Provedores de Terraform para infraestrutura do Azure
Vários provedores Terraform permitem o gerenciamento da infraestrutura do Azure:
- AzureRM: gerencie recursos do Azure Resource Manager, como máquinas virtuais, contas de armazenamento e interfaces de rede.
- AzureAD: gerencie recursos do Microsoft Entra, como grupos, usuários, entidades de serviço e aplicativos.
- AzureDevOps: gerencie recursos do Azure DevOps, como agentes, repositórios, projetos, pipelines e consultas.
- AzAPI: gerencie recursos do Azure usando as APIs do Azure Resource Manager diretamente. Este provedor complementa o provedor AzureRM habilitando o gerenciamento dos recursos mais recentes do Azure.
- Azure Stack: gerencie recursos do Azure Stack, como máquinas virtuais, DNS, redes virtuais e armazenamento.
Criar uma conta de armazenamento
Todas as configurações de Terraform devem conter um provider
bloco. O código HCL a seguir especifica o provedor do Azure Resource Manager (azurerm
). Um grupo de recursos do Azure nomeado storageaccountexamplerg
é definido no eastus
local. Uma conta de armazenamento do Azure é criada dentro do grupo de recursos. O nome da conta de armazenamento são os primeiros 24 caracteres de um número gerado através da md5
função.
terraform {
required_version = ">=0.12"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>2.0"
}
}
}
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "rg" {
location = "eastus"
name = "storageaccountexamplerg"
}
resource "azurerm_storage_account" "example" {
name = substr(md5(azurerm_resource_group.rg.id), 0, 24)
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
account_kind = "StorageV2"
account_tier = "Standard"
account_replication_type = "LRS"
access_tier = "Hot"
}
Execute o código Terraform
Execute terraform init
para baixar os módulos necessários do Azure para gerenciar seus recursos do Azure:
terraform init
Execute terraform plan
para determinar quais ações são necessárias para criar a configuração que você especificou em seus arquivos de configuração. Executar o comando cria um plano de execução, mas não o aplica. Esse padrão permite que você verifique se o plano de execução corresponde às suas expectativas antes de fazer qualquer alteração nos recursos reais.
terraform plan -out main.tfplan
Depois de verificar o plano de execução, execute terraform apply
para aplicá-lo. Este comando cria os recursos definidos.
terraform apply main.tfplan
Verificar a conta de armazenamento
Para verificar a conta de armazenamento do Azure, você pode usar o terraform state show
comando. Este comando mostra o estado atual do recurso especificado.
No caso da conta de armazenamento que você criou neste módulo, o comando mostra o nome gerado, juntamente com uma lista completa de atributos da conta de armazenamento e seus valores.
terraform state show 'azurerm_storage_account.example'
Clean up resources (Limpar recursos)
Quando não precisar mais dos recursos criados neste módulo, execute terraform apply
com o -destroy
sinalizador:
terraform plan -destroy -out main.destroy.tfplan
Execute terraform apply
para aplicar o plano de execução:
terraform apply main.destroy.tfplan