Exportar recursos do Google Cloud para o formato Terraform

Você implantou recursos no Google Cloud e agora precisa gerenciar a infraestrutura como código (IaC, na sigla em inglês) com o Terraform. O Google oferece uma ferramenta que pode ser usada para gerar o código do Terraform para recursos em um projeto, uma pasta ou organização.

Antes de começar

Instale a interface de linha de comando (CLI, na sigla em inglês) do Config Connector.

gcloud components install config-connector

O Config Connector permite que você use a ferramenta de exportação em massa do Terraform do Google Cloud.

Exportar toda a configuração do projeto para o código HCL do Terraform

O comando gcloud beta resource-config bulk-export --resource-format=terraform exporta os recursos configurados no projeto, na pasta ou na organização e os exibe na tela no formato do código HCL.

gcloud beta resource-config bulk-export \
  --project=PROJECT_ID \
  --resource-format=terraform

Gravar a saída em uma estrutura de diretórios

Gere a configuração completa do projeto para um caminho:

gcloud beta resource-config bulk-export \
  --path=OUTPUT_DIRECTORY_NAME \
  --project=PROJECT_ID \
  --resource-format=terraform

A sinalização --path especifica a localização para gerar o código HCL. Se o caminho OUTPUT_DIRECTORY_NAME não existir, será exibida uma solicitação perguntando se você quer criá-lo.

Depois de executar o comando, o código HCL de cada recurso é enviado para um arquivo .tf separado na seguinte estrutura de diretório:

OUTPUT_DIRECTORY_NAME/projects/PROJECT_ID/RESOURCE_TYPE

Gravar a saída em um único arquivo

Se você não quiser imprimir a saída na tela ou criar arquivos .tf separados, grave toda a saída em um único arquivo, conforme mostrado neste exemplo:

gcloud beta resource-config bulk-export --resource-format=terraform >> gcp_resources.tf

Filtrar a saída

Filtre a saída do comando de exportação em massa especificando tipos de recurso.

Liste os tipos de recursos suportados para filtrar

Para ver uma lista de tipos de recursos suportados, execute o comando gcloud beta resource-config list-resource-types:

gcloud beta resource-config list-resource-types

Como opção, grave a saída em um arquivo:

gcloud beta resource-config list-resource-types >> strings.txt

Na saída, o tipo de recurso para as VMs do Compute Engine é listado como:

KRM KIND: ComputeInstance

Ignore o prefixo KRM KIND:.

Exportar um único tipo de recurso

Use a string ComputeInstance mostrada no comando anterior para exportar somente as instâncias de VM do Compute Engine para o projeto no formato de código HCL:

gcloud beta resource-config bulk-export \
  --resource-types=ComputeInstance \
  --project=PROJECT_ID \
  --resource-format=terraform

A sinalização --resource-types especifica o tipo de recurso a ser gerado.

Exportar vários tipos de recursos

Exporte instâncias de VM e regras de firewall no formato de código HCL:

gcloud beta resource-config bulk-export \
  --resource-types=ComputeFirewall,ComputeInstance \
  --project=PROJECT_ID \
  --resource-format=terraform

Usar um arquivo para especificar os tipos de recursos a serem exportados

  1. Crie um diretório chamado tf-output.

    cd && mkdir tf-output && cd tf-output
    
  2. Crie um arquivo chamado types.txt e adicione uma lista de tipos de recursos. Exemplo:

    ComputeBackendBucket
    ComputeBackendService
    ComputeForwardingRule
    
  3. Execute o comando gcloud beta resource-config bulk-export com a sinalização --resource-types-file.

    gcloud beta resource-config bulk-export \
     --resource-types-file=types.txt \
     --path=tf-output \
     --project=PROJECT_ID \
     --resource-format=terraform
    

Se o projeto não tiver nenhum tipo de recurso específico, o comando será bem-sucedido, mas nada será gerado para esse tipo de recurso.

Próximas etapas