Importar recursos do Google Cloud para o estado do Terraform

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

O Terraform pode importar a infraestrutura atual. Isso permite que você use recursos criados por outros meios e os transfira para o gerenciamento do Terraform. O Google oferece uma ferramenta que pode ser usada para importar recursos do Google Cloud para o estado do Terraform e gerenciar a implantação no Terraform.

Você pode importar o estado de um projeto, uma pasta ou uma 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 importação do Terraform do Google Cloud.

Gerar código do Terraform para seus recursos

Execute o comando gcloud beta resource-config bulk-export para gerar a configuração inteira do projeto para o caminho: entire-tf-output:

gcloud beta resource-config bulk-export \
  --path=entire-tf-output \
  --project=PROJECT_ID \
  --resource-format=terraform

Criar módulos do Terraform a partir do código gerado

Execute o comando gcloud beta resource-config terraform generate-import, apontando para o conteúdo no diretório de saída:

gcloud beta resource-config terraform generate-import entire-tf-output

Este comando gera módulos do Terraform e um script de importação:

  • O arquivo gcloud-export-modules.tf. Esse arquivo aponta para todos os módulos dos sub-recursos. O conteúdo do arquivo é assim:

    provider "google" {
    project = "PROJECT_ID"
    }
    
    module "entire-tf-output-projects-PROJECT_ID-ComputeFirewall" {
    source = "./entire-tf-output/projects/PROJECT_ID/ComputeFirewall"
    }
    
    module "entire-tf-output-projects-PROJECT_ID-ComputeBackendService-global" {
    source = "./entire-tf-output/projects/PROJECT_ID/ComputeBackendService/global"
    }
    
    ...and so on
    
  • Um script de shell executável chamado terraform_import_20220331-19-12-33.sh. O script de shell contém uma lista de comandos terraform import:

    #!/bin/sh
    # Terraform Import Script generated by gcloud cli
    
    terraform import module.entire-tf-output-projects-PROJECT_ID-ComputeFirewall.google_compute_firewall.allow_ssh projects/PROJECT_ID/global/firewalls/allow-ssh
    
    ...and so on
    

    Os comandos terraform import são usados para importar os módulos criados pelo comando generate-import para o estado do Terraform.

Importar os módulos para o estado do Terraform

  1. Inicialize-o:

    terraform init
    
  2. Execute o script:

    ./terraform_import_20220331-19-12-33.sh
    

    Saída:

    module.examples-projects-PROJECT_ID-ComputeInstance-us-central1-a.google_compute_instance.instance_1:
    Importing from ID
    "projects/PROJECT_ID/zones/us-central1-a/instances/instance-1"...
    module.examples-projects-PROJECT_ID-ComputeInstance-us-central1-a.google_compute_instance.instance_1:
    Import prepared!
     Prepared google_compute_instance for import
    module.examples-projects-PROJECT_ID-ComputeInstance-us-central1-a.google_compute_instance.instance_1:
    Refreshing state...
    [id=projects/PROJECT_ID/zones/us-central1-a/instances/instance-1]
    
    Import successful!
    
    The resources that were imported are shown above. These resources are now in
    your Terraform state and will henceforth be managed by Terraform.
    

Próximas etapas