Introdução à Terraform

Concluído

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