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
Crea un directorio llamado
tf-output
.cd && mkdir tf-output && cd tf-output
Crea un archivo llamado
types.txt
y agrega una lista de tipos de recursos. Por ejemplo:ComputeBackendBucket ComputeBackendService ComputeForwardingRule
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.