Use o Terraform como infraestrutura como ferramenta de código para a CLI do Azure Developer

Azure Developer CLI (azd) suporta múltiplas infraestruturas como fornecedores de código (IaC), incluindo:

Por defeito, azd assume Bicep como fornecedor de IaC. Consulte o artigo Comparando Terraform e Bicep para ajuda a decidir qual o fornecedor de IaC que é o melhor para o seu projeto.

Nota

Terraform ainda está em beta. Leia mais sobre o suporte a funcionalidades alfa e beta na página de versionamento de funcionalidades e estratégias de lançamento

Pré-requisitos

Importante

As implementações do Terraform requerem um login com CLI do Azure mesmo quando se usa azd. O fornecedor Terraform azurerm autentica-se através do CLI do Azure por defeito e não lê tokens da azd cache de credenciais. Se executar apenas azd auth login, azd up falha na etapa de aprovisionamento com ERROR: Please run 'az login' to setup account. Consulte Autenticar no Azure para o fluxo de início de sessão recomendado.

Autenticar no Azure

Como o Terraform utiliza a CLI do Azure para autenticação, tem de ter sessão iniciada em azd e em az antes de executar azd up. Podes fazer isso de duas formas.

Configurar azd para delegar autenticação ao CLI do Azure. Esta definição permite-te iniciar sessão uma vez com az login e usar as mesmas credenciais para ambas as ferramentas.

azd config set auth.useAzCliAuth true
az login

Se trabalhar com vários inquilinos, inclua o --tenant parâmetro:

az login --tenant <tenant-id>

Opção 2: Iniciar sessão em cada ferramenta separadamente

Se preferir manter azd e a autenticação da CLI do Azure separados, inicie sessão em cada ferramenta com o respetivo comando:

azd auth login
az login

Tens de atualizar ambas as sessões quando qualquer um dos tokens expirar.

Configurar o Terraform como o provedor IaC

  1. Abra o ficheiro azure.yaml encontrado na raiz do seu projeto e certifique-se de que tem as seguintes linhas para sobrepor o padrão, que é Bicep:

    infra:
      provider: terraform
    
  2. Adiciona todos os teus .tf ficheiros ao infra diretório encontrado na raiz do teu projeto.

  3. Execute azd up.

Nota

Consulta estes dois modelos azd com o Terraform como Provedor de IaC: Node.js e Terraform e Python e Terraform.

azd pipeline config para Terraform

Terraform armazena o estado sobre sua infraestrutura gerenciada e configuração. Por causa deste ficheiro de estado, precisas de ativar o estado remoto antes executares azd pipeline config para configurar o teu pipeline de implementação em GitHub.

Por defeito, azd assume o uso do ficheiro de estado local. Se executaste azd up antes de ativar o estado remoto, precisas de correr azd down e mudar para o ficheiro de estado remoto.

Estado local vs estado remoto

A Terraform utiliza dados de estado persistente para acompanhar os recursos que gere.

Cenários para habilitar o estado remoto:

  • Para permitir o acesso compartilhado aos dados do 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 local do estado

Ativar estado remoto

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

  2. Adiciona um novo ficheiro 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. Atualização provider.tf encontrada na infra pasta 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 configuração no .env ficheiro. 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. Executa o comando seguinte azd conforme o teu fluxo de trabalho habitual. Quando o estado remoto é detetado, azd inicializa o Terraform com a configuração do backend configurada.

  6. Para partilhar o ambiente com os colegas de equipa, certifique-se de que eles correm azd env refresh -e <environmentName> para atualizar as definições do ambiente no sistema local e execute o Passo 4 para adicionar configuração no .env ficheiro.

Consulte também

Próximos passos