Exporta tus recursos de Google Cloud al formato de Terraform

Implementaste recursos en Google Cloud y ahora debes administrar la infraestructura como código (IaC) con Terraform. Google proporciona una herramienta que puedes usar para generar código de Terraform en relación con recursos en 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 exportación masiva de Terraform de Google Cloud.

Exporta toda la configuración del proyecto al código de HCL de Terraform

Con el comando gcloud beta resource-config bulk-export --resource-format=terraform, se exportan los recursos configurados actualmente en el proyecto, la carpeta o la organización y, luego, los imprime en la pantalla en formato de código HCL.

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

Escribe el resultado en una estructura de directorios

Envía la configuración completa del proyecto a una ruta de acceso:

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

La marca --path especifica la ubicación para generar el código HCL. Si la ruta de acceso OUTPUT_DIRECTORY_NAME no existe, un mensaje te preguntará si deseas crearla.

Después de ejecutar el comando, el código HCL para cada recurso se envía a un archivo .tf separado en la siguiente estructura de directorios:

OUTPUT_DIRECTORY_NAME/projects/PROJECT_ID/RESOURCE_TYPE

Escribe el resultado en un solo archivo

Si no deseas imprimir el resultado en la pantalla ni crear archivos .tf separados, puedes escribir todo el resultado en un solo archivo, como se muestra en este ejemplo:

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

Filtra el resultado

Filtra el resultado del comando de exportación masiva mediante la especificación de los tipos de recursos.

Enumera los tipos de recursos admitidos para filtrar

Para obtener una lista de los tipos de recursos admitidos, ejecuta el comando gcloud beta resource-config list-resource-types:

gcloud beta resource-config list-resource-types

De manera opcional, escribe el resultado en un archivo:

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

En la salida, el tipo de recurso de las VM de Compute Engine aparece de la siguiente forma:

KRM KIND: ComputeInstance

Puedes ignorar el prefijo KRM KIND:.

Exporta un solo tipo de recurso

Usa la string ComputeInstance que se muestra en el comando anterior a fin de exportar solo las instancias de VM de Compute Engine de tu proyecto en formato de código HCL:

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

La marca --resource-types especifica el tipo de recurso que se mostrará.

Exporta varios tipos de recursos

Exporta instancias de VM y reglas de firewall en formato de código HCL:

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

Usa un archivo a fin de especificar los tipos de recursos que deseas exportar

  1. Crea un directorio llamado tf-output.

    cd && mkdir tf-output && cd tf-output
    
  2. Crea un archivo llamado types.txt y agrega una lista de tipos de recursos. Por ejemplo:

    ComputeBackendBucket
    ComputeBackendService
    ComputeForwardingRule
    
  3. Ejecuta el comando gcloud beta resource-config bulk-export con la marca --resource-types-file:

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

Si el proyecto no contiene ningún tipo de recurso en particular, el comando funciona correctamente, pero no se muestra nada para ese tipo de recurso.

Próximos pasos