Usar o Terraform como uma ferramenta de infraestrutura como código para a CLI do Desenvolvedor do Azure

A CLI do Desenvolvedor do Azure (azd) dá suporte a vários provedores de IaC (infraestruturas como código), incluindo:

Por padrão, azd assume Bicep como o provedor de IaC. Consulte o artigo Comparando o Terraform e o Bicep para obter ajuda para decidir qual provedor de IaC é melhor para seu projeto.

Observação

O Terraform ainda está em beta. Leia mais sobre o suporte a recursos alfa e beta na página de controle de versão e estratégia de lançamento de recursos

Pré-requisitos

Importante

As implantações do Terraform exigem login na CLI do Azure mesmo quando você usa azd. O provedor Terraform azurerm autentica por CLI do Azure por padrão e não lê tokens do azd cache de credenciais. Se você executar azd auth loginapenas, azd up falhará na etapa de provisionamento com ERROR: Please run 'az login' to setup account. Consulte Authenticate to Azure para ver o fluxo de entrada recomendado.

Autenticar no Azure

Como o Terraform usa CLI do Azure para autenticação, você precisa estar conectado a ambos azd e az antes de executar azd up. Você pode fazer isso de duas maneiras.

Configure azd para delegar a autenticação para CLI do Azure. Essa configuração permite que você entre uma vez com az login e use as mesmas credenciais para ambas as ferramentas.

azd config set auth.useAzCliAuth true
az login

Se você trabalhar com vários locatários, inclua o --tenant parâmetro:

az login --tenant <tenant-id>

Opção 2: Entrar em cada ferramenta separadamente

Se você preferir manter a autenticação do azd e da CLI do Azure independente, faça login em cada ferramenta com seu próprio comando:

azd auth login
az login

Você precisa atualizar ambas as sessões quando um dos tokens expirar.

Configurar o Terraform como o provedor de IaC

  1. Abra o azure.yaml arquivo encontrado na raiz do seu projeto e verifique se você tem as seguintes linhas para substituir o padrão, que é Bicep:

    infra:
      provider: terraform
    
  2. Adicione todos os seus arquivo .tf ao infra diretório encontrado na raiz do seu projeto.

  3. Execute azd up.

Observação

Confira estes dois modelos azd usando o Terraform como provedor de IaC: Node.js e Terraform e Python e Terraform.

azd pipeline config para Terraform

O Terraform armazena o estado da sua infraestrutura e configuração gerenciadas. Devido a esse arquivo de estado, você precisa habilitar o estado remoto antes de executar azd pipeline config para configurar o pipeline de implantação no GitHub.

Por padrão, azd pressupõe o uso do arquivo de estado local. Se você executou azd up antes de habilitar o estado remoto, precisará executar azd down e alternar para o arquivo de estado remoto.

Estado local vs. remoto

O Terraform usa dados persistentes de estado para acompanhar os recursos que gerencia.

Cenários para habilitar o estado remoto:

  • Para permitir o acesso compartilhado aos dados de estado e permitir que várias pessoas trabalhem juntas nessa coleção de recursos de infraestrutura
  • Para evitar a exposição de informações confidenciais incluídas no arquivo de estado
  • Para diminuir a chance de exclusão inadvertida devido ao armazenamento do estado localmente

Habilitar estado remoto

  1. Certifique-se de configurar uma conta de armazenamento de estado remoto.

  2. Adicione um novo arquivo chamado provider.conf.json na infra pasta.

    {
        "storage_account_name": "${RS_STORAGE_ACCOUNT}",
        "container_name": "${RS_CONTAINER_NAME}",
        "key": "azd/azdremotetest.tfstate",
        "resource_group_name": "${RS_RESOURCE_GROUP}"
    }
    
  3. Atualize provider.tf encontrado na pasta infra para definir o backend como remoto

    # Configure the Azure Provider
    terraform {
      required_version = ">= 1.1.7, < 2.0.0"
      backend "azurerm" {
      }
    
  4. Execute azd env set <key> <value> para adicionar a configuração no .env arquivo. Por exemplo:

    azd env set RS_STORAGE_ACCOUNT your_storage_account_name
    azd env set RS_CONTAINER_NAME your_terraform_container_name
    azd env set RS_RESOURCE_GROUP your_storage_account_resource_group
    
  5. Execute o próximo comando azd de acordo com seu fluxo de trabalho normal. Quando o estado remoto é detectado, azd inicializa o Terraform com a configuração de back-end configurada.

  6. Para compartilhar o ambiente com colegas de equipe, certifique-se de que eles executem azd env refresh -e <environmentName> para atualizar as configurações do ambiente no sistema local e realizem a Etapa 4 para adicionar a configuração no arquivo .env.

Confira também

Próximas etapas

Perguntas frequentes sobre Azure Developer CLI