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ática recomendada 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 exibição.

Tarefa Atalhos 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
Mova para a página anterior na lista de recursos. -ou- h -ou- Page Up
Vá 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- Página Inicial
Vá para o final da lista de recursos. G -ou- End
Selecionando recursos para ignorar
Ignorar recurso (ou cancelar a exibição se marcado como "Ignorar") excluir
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 pulos (mas não por filtragens). s
Exporte recursos para o estado (se --hcl-only não for especificado) e gere 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
Exiba a ajuda. ?
Renunciar
Saia do modo interativo. q

Para cada recurso, a Exportação do Azure para Terraform tenta reconhecer o tipo correspondente de recurso do Terraform. Se encontrar uma correspondência, a linha será marcada com o seguinte indicador: 💡.

Se o recurso não puder ser resolvido, você precisará inserir o endereço de recurso do Terraform no seguinte formulário: <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 se test refere ao nome da máquina virtual usada nos arquivos de configuração.

Para ver os tipos de recurso disponíveis para o recurso selecionado, pressione r.

Em alguns casos, há recursos do Azure que não têm recursos do Terraform correspondentes, como se o recurso não tivesse suporte ao Terraform. Alguns recursos também podem ser criados como um efeito colateral do provisionamento de outro recurso , como o recurso 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) importe-o para o estado do 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 o Azure Export para Terraform não estiver vazio, você deve adicionar o sinalizador --overwrite para conseguir utilizar o sinalizador --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 diretrizes sobre qual opção tomar com base no cenário.

Gerenciar 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ê tiver certeza de que deseja gerenciar o conjunto de recursos no Terraform com fluxos de trabalho terraform init plan apply, a exportação para o estado será essencial.

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

Infraestrutura existente

Em cenários onde você está exportando para ambientes Terraform existentes, pode ser útil considerar --hcl-only como equivalente a um plano do Terraform, especialmente antes de adicionar a ambientes já 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 Explorar a seleção e a nomenclatura de recursos personalizados usando a Exportação do Azure para Terraform.

Limitações

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 conhecidas atuais são explicadas nas subseções a seguir.

Restrições entre propriedades

O provedor do AzureRM pode definir duas propriedades que entram em conflito entre si. Quando a funcionalidade de exportação do Azure para Terraform lê propriedades conflitantes, ela pode atribuir o mesmo valor a ambas as propriedades, mesmo que o usuário tenha configurado apenas uma delas. 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 do recurso

Quando você estiver usando o Azure Export para Terraform para direcionar escopos de recursos, os recursos necessários para a configuração poderão 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 de gravação

A Exportação do Azure não pode gerar propriedades somente de gravação (como senhas) dentro da configuração. Você precisa conhecer essas propriedades 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

Há algumas operações necessárias se o usuário quiser 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 não sandbox.

Recursos definidos pela propriedade

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

Dependências explícitas

No momento, a funcionalidade de exportação do Azure para o Terraform pode declarar apenas dependências explícitas. Você deve saber o mapeamento das relações entre os recursos para refatorar o código para incluir as dependências implícitas necessárias.

Valores codificados

Atualmente, a Exportação do Azure para Terraform gera cadeias de caracteres codificadas. Como prática recomendada, você deve refatorar esses valores para variáveis. Além disso, quando você usa o --full-properties sinalizador 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 desse código.

Próximas etapas