Compartilhar via


Como funciona a exportação do Azure para Terraform

Este artigo apresenta os fluxos de trabalho do Azure Export for Terraform . Neste artigo, você aprenderá sobre as diretrizes de práticas recomendadas da ferramenta, as limitações atuais e como atenuar essas limitações.

Modo interativo

Por padrão, a Exportação do Azure para Terraform é executada no modo interativo. Quando você executa no modo interativo, os atalhos de teclado disponíveis são listados na parte inferior da tela.

Tarefa Atalho(s) de teclado
Navegação
Selecione o item anterior na lista de recursos. ↑ -ou- k
Selecione o próximo item na lista de recursos. ↓ -ou- j
Mover para a página anterior na lista de recursos. ← -ou- h -ou- Page Up
Mover para a próxima página na lista de recursos. → -ou- l -ou- Page Down
Vá para o início da lista de recursos. g -ou- Início
Vá para o final da lista de recursos. G -ou- Fim
Selecionando recursos a serem ignorados
Ignorar recurso (ou anular se marcado como "Ignorar") Delete
Operações de filtro
Defina um filtro por texto na lista de recursos. /
Limpar qualquer filtro atual Esc
Salvar operações
Salve um arquivo de mapeamento da lista de recursos. O arquivo de saída é afetado por ignorar (mas não filtrar). s
Exporte recursos para o estado (se --hcl-only não for especificado) e gera a configuração. w
Experiência do usuário
Exibir recomendações para o recurso atual. r
Mostrar erros de exportação de recursos (se houver). e
Exibir ajuda. ?
Renunciar
Feche o modo interativo. q

Para cada recurso, o Azure Export for Terraform tenta reconhecer o tipo de recurso Terraform correspondente. Se encontrar uma correspondência, a linha é marcada com o seguinte indicador: 💡.

Se o recurso não puder ser resolvido, você precisará inserir o endereço do recurso Terraform no seguinte formato: <resource type>.<resource name>. Por exemplo, azurerm_linux_virtual_machine.test refere-se a um tipo de recurso Terraform de azurerm_linux_virtual_machine enquanto o test refere-se ao nome da máquina virtual usada nos arquivos de configuração.

Para ver o(s) tipo(s) de recurso disponível(is) para o recurso selecionado, pressione r.

Em alguns casos, há recursos do Azure que não têm recursos Terraform correspondentes, como se o recurso não tiver suporte ao Terraform. Alguns recursos também podem ser criados como um efeito colateral do provisionamento de outro recurso - como o recurso de disco do sistema operacional que é criado ao provisionar uma máquina virtual. Nesses casos, você pode ignorar os recursos sem atribuir nada.

Depois de passar por todos os recursos a serem importados, pressione w para começar a gerar a configuração do Terraform e (se --hcl-only não estiver selecionado) importar para o estado Terraform.

Modo não interativo

Por padrão, a Exportação do Azure para Terraform é executada no modo interativo. Para especificar que a ferramenta deve ser executada no modo não interativo, especifique o --non-interactive sinalizador.

aztfexport [command] --non-interactive <scope>

Importante

Se o diretório no qual você está executando a Exportação do Azure para Terraform não estiver vazio, você deverá adicionar o --overwrite sinalizador para usá-lo --hcl-only .

Práticas recomendadas em fluxos de trabalho principais

Em um nível fundamental, qualquer usuário do Azure Export enfrenta uma decisão entre duas opções:

As subseções a seguir fornecem orientação sobre qual opção tomar com base no cenário.

Gerenciando a infraestrutura

Talvez você não precise exportar para o estado se não tiver verificado se os recursos configurados se comportam em seu ambiente da maneira desejada.

Se você tem certeza de que deseja gerenciar o conjunto de recursos no Terraform com terraform init plan apply fluxos de trabalho, exportar para o estado é essencial.

Se você ainda não tiver certeza de que deseja gerenciar os recursos, é recomendável passar o --hcl-only sinalizador.

Infraestrutura existente

Em cenários em que você está exportando para ambientes Terraform existentes, pode ser útil pensar em um plano de terraform equivalente, especialmente antes de --hcl-only anexar a ambientes existentes.

O terraform apply comando equivale à exportação de recursos - durante o qual sua configuração se vincula ao estado pré-existente. Nesse cenário, o uso de um arquivo de mapeamento economiza tempo de execução para listar e mapear recursos.

Descobrindo a infraestrutura

Se você não tiver certeza de quais recursos existem em um ambiente, poderá verificar especificando o --generate-mapping-file sinalizador. Para obter mais informações sobre esse assunto, consulte Explorando a seleção e a nomeação de recursos personalizados usando a Exportação do Azure para Terraform.

Limitações

A Exportação do Azure para Terraform é uma ferramenta complexa que tenta converter a infraestrutura do Azure em código e estado do Terraform. Suas limitações atuais conhecidas são explicadas nas subseções a seguir.

Propriedades somente gravação

Determinadas propriedades no AzureRM são somente gravação e não estão incluídas no código gerado que o Azure Export for Terraform cria. O problema é resolvido definindo a propriedade após a exportação para o código HCL.

Restrições entre propriedades

O provedor do AzureRM pode definir duas propriedades que entram em conflito entre si. Quando o Azure Export for Terraform lê propriedades conflitantes, ele pode definir ambas as propriedades com o mesmo valor, apesar de o usuário configurar apenas uma. Outras complicações surgem quando existem várias restrições entre propriedades na mesma configuração gerada. Você deve saber onde existem conflitos entre propriedades em sua configuração para atenuar esse problema.

Infraestrutura fora do escopo de recursos

Quando você estiver usando o Azure Export for Terraform para segmentar escopos de recursos, os recursos necessários para a configuração podem existir fora do escopo especificado. Um exemplo é uma atribuição de função. O usuário precisa identificar recursos que estão fora do escopo.

Propriedades somente gravação

A Exportação do Azure não pode gerar propriedades somente gravação (como senhas) em sua configuração. Você precisa saber sobre as propriedades somente gravação e defini-las em uma configuração para criar novos conjuntos de recursos.

Modificando o código para corresponder aos padrões de codificação

Existem algumas operações necessárias se o usuário deseja modificar seu código para cumprir os padrões de codificação. Essas etapas só seriam necessárias se o usuário planeja usar o código em ambientes que não sejam de área restrita.

Recursos definidos pela propriedade

Determinados recursos no Azure podem ser definidos como uma propriedade em um recurso Terraform pai ou um recurso Terraform individual. Um exemplo é uma sub-rede. A Exportação do Azure para Terraform define o recurso como um recurso individual, mas é uma prática recomendada corresponder à sua configuração de codificação existente.

Dependências explícitas

No momento, o Azure Export for Terraform pode declarar apenas dependências explícitas. Você deve conhecer o mapeamento das relações entre recursos para refatorar o código para incluir quaisquer dependências implícitas necessárias.

Valores embutidos

O Azure Export for Terraform atualmente gera cadeias de caracteres codificadas. Como prática recomendada, você deve refatorar esses valores para variáveis. Além disso, quando você usa o sinalizador --full-properties para expor todas as propriedades, algumas informações confidenciais (como segredos) podem ser vistas na configuração gerada. Use as práticas recomendadas para proteger a visibilidade deste código.

Próximas etapas