Importa tus recursos de Google Cloud al estado de Terraform

Terraform puede importar la infraestructura existente. Esto te permite tomar los recursos que creaste por otros medios y ponerlos en la administración de Terraform. Google proporciona una herramienta que puedes usar para importar tus recursos de Google Cloud al estado de Terraform a fin de que puedas administrar la implementación en Terraform.

Puedes importar el estado de un proyecto, organización o carpeta.

Antes de comenzar

Instala la interfaz de línea de comandos (CLI) para Config Connector.

gcloud components install config-connector

Config Connector te permite usar la herramienta de importación de Terraform de Google Cloud.

Genera código de Terraform para tus recursos

Ejecuta el comando gcloud beta resource-config bulk-export para enviar la configuración completa del proyecto a la ruta, entire-tf-output:

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

Crea módulos de Terraform a partir del código generado

Ejecuta el comando gcloud beta resource-config terraform generate-import apuntando al contenido en el directorio de salida:

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

Este comando genera módulos de Terraform y una secuencia de comandos de importación:

  • El archivo gcloud-export-modules.tf. Este archivo apunta a todos los módulos de los subrecursos. El contenido de este archivo se ve de la siguiente manera:

    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
    
  • Una secuencia de comandos de shell ejecutable con un nombre similar a terraform_import_20220331-19-12-33.sh. La secuencia de comandos de shell contiene una 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
    

    Los comandos terraform import sirven para importar los módulos creados por el comando generate-import al estado de Terraform.

Importa los módulos al estado de Terraform

  1. Inicialízalo:

    terraform init
    
  2. Ejecuta la secuencia de comandos:

    ./terraform_import_20220331-19-12-33.sh
    

    Resultado:

    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óximos pasos