Partilhar 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 atenuá-las.

Modo interativo

Por padrão, o Azure Export for Terraform é executado 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
Ir para o início da lista de recursos. g -ou- Início
Ir para o final da lista de recursos. G ou Fim
Seleção de recursos a serem ignorados
Ignorar recurso (ou anular se marcado como "Ignorar") Eliminar
Operações de filtragem
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 omissão, embora não seja filtragem. s
Exporte recursos para o estado (se --hcl-only não for especificado) e gere a configuração. w
Experiência do utilizador
Exibir recomendações para o recurso atual. r
Mostrar erros de exportação de recursos (se houver). e
Exibir ajuda. ?
Desistir
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 da seguinte forma: <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 a 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, o Azure Export for Terraform é executado 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 está a executar o Azure Export for Terraform não estiver vazio, deve adicionar o indicador --overwrite para utilizar o indicador --hcl-only.

Práticas recomendadas nos principais fluxos de trabalho

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.

Gestão da infraestrutura

Talvez não seja necessário 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 ainda não tens a certeza de que queres gerir os recursos, é recomendável passar a flag --hcl-only.

Infraestrutura existente

Em cenários em que está a exportar para ambientes Terraform existentes, pode ser útil pensar em --hcl-only como um equivalente ao terraform plan, especialmente antes de fazer uma adição aos ambientes existentes.

O terraform apply comando equivale a exportar recursos - durante o qual sua configuração se vincula ao estado pré-existente. Nesse cenário, usar 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

O Azure Export for Terraform é uma ferramenta complexa que tenta converter a infraestrutura do Azure em código e estado do Terraform. As suas atuais limitações conhecidas são explicadas nas subsecções seguintes.

Restrições entre propriedades

O provedor 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 de propriedade cruzada dentro da mesma configuração gerada. Você deve saber onde existem conflitos entre propriedades em sua configuração para mitigar esse problema.

Infraestrutura fora do escopo de recursos

Quando você estiver usando o Azure Export for Terraform para direcionar 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 apenas de escrita

O Azure Export 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 por propriedades

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

Dependências explícitas

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

Valores codificados

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 desse código.

Próximos passos