En esta página, se proporcionan respuestas a las preguntas frecuentes que surgen cuando se usa Terraform para administrar recursos en Google Cloud, en particular, en relación con las interacciones de la API y los primeros pasos.
Comienza a usar Terraform
En esta sección, se abarcan los conceptos básicos y los primeros pasos para los usuarios nuevos de Terraform.
¿Qué es la infraestructura como código (IaC) y por qué debería usar Terraform?
La infraestructura como código (IaC) es la práctica de administrar y aprovisionar infraestructura de procesamiento a través de archivos de definición legibles por máquina. Para obtener una descripción general completa de los conceptos y beneficios de IaC, consulta ¿Qué es la infraestructura como código?.
Terraform es una herramienta de IaC de código abierto que se usa para definir, aprovisionar y administrar recursos locales y en la nube. Para obtener información sobre las ventajas de usar Terraform en tu flujo de trabajo de IaC, consulta los Beneficios de usar Terraform.
¿Cómo instalo Terraform y ejecuto mi primera configuración?
Para comenzar a usar Terraform, primero debes descargar e instalar la CLI de Terraform en tu máquina local. Las instrucciones están disponibles en el sitio web de HashiCorp Terraform. Después de la instalación, puedes crear un archivo de configuración de Terraform, definir un recurso (como un bucket de Cloud Storage) y, luego, usar terraform init
para inicializar tu directorio de trabajo, terraform plan
para obtener una vista previa de los cambios y terraform apply
para aplicarlos.
¿Qué es el lenguaje de configuración de HashiCorp (HCL) y dónde puedo aprender su sintaxis?
El lenguaje de configuración de HashiCorp (HCL) es el lenguaje de configuración que usa Terraform. Está diseñado para ser legible y compatible con las máquinas, para una escritura y comprensión claras y eficientes de las definiciones de infraestructura. HCL admite varias funciones, como variables, expresiones, funciones y módulos. Puedes aprender la sintaxis de HCL a través de la documentación oficial de HashiCorp Terraform, que proporciona guías y ejemplos integrales.
¿Dónde puedo encontrar ejemplos de configuraciones de Terraform para recursos de Google Cloud ?
Puedes encontrar numerosos ejemplos de configuraciones de Terraform para Google Cloud:
HashiCorp Terraform Registry: El Registro de Terraform oficial para el proveedor de Google Cloud contiene documentación y ejemplos para cada recurso y fuente de datos.
Google Cloud Muestras de Terraform: Google proporciona una variedad de muestras de Terraform que demuestran cómo implementar y administrar recursos Google Cloud comunes.
Repositorios de GitHub: Muchos repositorios de código abierto, incluida la organización de
terraform-google-modules
en GitHub, ofrecen ejemplos y módulos reutilizables.
¿Cómo puedo administrar y probar configuraciones complejas de Terraform, en especial cuando se trata de muchos recursos?
Para las configuraciones complejas, considera usar las funciones de Terraform diseñadas para la escalabilidad y el mantenimiento:
Módulos: Encapsulan y reutilizan patrones de infraestructura comunes.
Espacios de trabajo: Administra varias instancias distintas de una sola configuración.
terraform plan
yterraform validate
: Usa estos comandos con frecuencia para validar la sintaxis y obtener una vista previa de los cambios sin realizar la implementación.Recursos de segmentación (usar con precaución): Para probar partes específicas, puedes usar temporalmente
-target
conterraform apply
oterraform destroy
, aunque, en general, no se recomienda para las operaciones de rutina debido a las complejidades de la administración de estados.Entornos dedicados: Implementa en entornos de desarrollo o de pruebas para realizar pruebas antes de la producción.
Google Cloud Preguntas sobre la API
Estas preguntas abordan consultas habituales sobre la interacción de Terraform con las APIs deGoogle Cloud , incluidas las APIs públicas y privadas.
¿Puedo usar Terraform para administrar o importar APIs internas o privadas de Google Cloud como dataproc-control.googleapis.com
?
No. Las APIs internas o privadas Google Cloud forman parte de la Service Infrastructure administrada de Google y no se exponen para la administración, la habilitación o la importación directas por parte del cliente con Terraform. Google Cloudcontrola estas APIs automáticamente. Si intentas administrarlos directamente con Terraform, se producirán errores.
Para obtener una explicación detallada, consulta la guía sobre cómo comprender las APIs de Google Cloud y Terraform.
¿Cuál es la diferencia entre habilitar una API y importar un recurso en Terraform?
Habilitar una API: Esto significa activar un servicio Google Cloud específico para tu proyecto y otorgarle a ese proyecto los permisos necesarios para usar ese servicio. Cuando se usa Terraform en Google Cloud, esto se suele hacer con el recurso
google_project_service
. Este es un requisito previo para crear recursos que dependen de esa API.Importar un recurso: Se refiere a incorporar un recurso Google Cloud existente (por ejemplo, una instancia de Compute Engine o un bucket de Cloud Storage) que se creó fuera de Terraform bajo la administración de Terraform. Importas recursos, no las APIs en sí.
Para obtener más detalles, consulta la Guía para comprender las APIs de Google Cloud y Terraform.
¿Qué sucede si no administro o importo explícitamente dataproc-control.googleapis.com? ¿Afectará mi capacidad para usar Dataproc?
No, no afectará tu capacidad para usar Dataproc. dataproc-control.googleapis.com
es una API interna que usa Dataproc para su propio control operativo. Su funcionalidad se administra automáticamente conGoogle Cloud, y no requiere que la habilites, importes o administres de forma explícita con Terraform. Tus clústeres y trabajos de Dataproc funcionarán correctamente sin ninguna intervención manual en relación con esta API interna.
¿Cómo soluciono los errores 403 de permiso denegado en Terraform?
Por lo general, los errores de 403 Permission Denied
indican que la cuenta de servicio o las credenciales de usuario que usa Terraform no tienen los permisos de IAM necesarios para realizar una acción solicitada en un recurso Google Cloud específico. Para solucionar el problema, haz lo siguiente:
Identifica el recurso y el método de API afectados: Por lo general, el mensaje de error especifica el tipo de recurso y la llamada a la API que falló.
Verifica los roles de IAM: Comprueba que el principal (cuenta de servicio o usuario) tenga los roles de IAM correctos asignados en el nivel adecuado (proyecto, carpeta, organización o recurso). Usa el solucionador de problemas de IAM en la consola de Google Cloud .
Verifica que el servicio esté habilitado: Confirma que el servicio de la API de Google Cloud requerido esté habilitado para tu proyecto (por ejemplo, con
gcloud services enable
ogoogle_project_service
).Revisa las políticas de la organización: Comprueba si alguna política de la organización restringe la acción.
¿Por qué recibo errores relacionados con la cuota (429 Too Many Requests o 403 Quota Exceeded)?
Los errores de cuota se producen cuando tu proyecto intenta consumir más recursos o realizar más solicitudes a la API de lo que permiten sus cuotas actuales. Para solucionar el problema, sigue estos pasos:
Identifica la cuota específica: Por lo general, el mensaje de error especificará la API y el límite de cuota que se superó.
Verifica las cuotas actuales: Visita la página Cuotas en la consola de Google Cloud para ver el uso y los límites actuales.
Solicita un aumento de la cuota: Si necesitas más capacidad, puedes solicitar un aumento de la cuota directamente desde la página Cuotas.
Considera
user_project_override
: En el caso de algunos recursos, si tu proyecto de credenciales difiere del proyecto de recursos, es posible que las solicitudes a la API se facturen según la cuota del proyecto de credenciales. A veces, usaruser_project_override
(consulta la referencia del proveedor) puede resolver este problema, ya que obliga a que la cuota se facture al proyecto del recurso.
¿Qué es una cuenta de servicio predeterminada administrada por el usuario y cómo puedo administrar sus permisos con Terraform?
Ciertos servicios Google Cloud crean automáticamente cuentas de servicio administradas por el usuario (a menudo denominadas cuentas de servicio predeterminadas) cuando se crea un proyecto o se habilita un servicio. Por lo general, tienen permisos amplios. Si bien los usuarios las administran, Google las crea. Puedes administrar sus permisos con recursos de IAM, como google_project_iam_member
, para modificar sus roles. Si deseas tomar medidas en relación con las cuentas de servicio predeterminadas, como quitar sus roles predeterminados con privilegios elevados o borrar las cuentas por completo, puedes usar el recurso google_project_default_service_accounts
.
Google también proporciona orientación sobre los tipos de cuentas de servicio predeterminadas.
¿Qué es una cuenta de servicio administrada por Google y cómo puedo hacer referencia a ella en las configuraciones de Terraform?
Google crea y administra por completo las cuentas de servicio administradas por Google para ciertos servicios. Existen fuera de los proyectos de los usuarios y estos no pueden configurarlas directamente de la misma manera que las cuentas de servicio administradas por el usuario. Sin embargo, es posible que debas otorgarles permisos de IAM para que interactúen con tus recursos. Puedes hacer referencia a la dirección de correo electrónico de una cuenta de servicio administrada por Google para un servicio específico con la fuente de datos o el recurso google_project_service_identity
en Terraform y, luego, aplicar políticas de IAM a ella. Por ejemplo, esto es común para servicios como Cloud Build o Cloud Composer.
¿Qué sucede cuando terraform destroy
un recurso que tiene configurado disable_on_destroy
?
El argumento disable_on_destroy
en google_project_service
y algunos otros recursos (por ejemplo, google_storage_bucket
) controla si el recurso de nube subyacente se inhabilita o se borra cuando se destruye el recurso de Terraform.
Si
disable_on_destroy
estrue
(o no se configura, ya que suele ser el valor predeterminado),terraform destroy
intentará inhabilitar (para las APIs) o borrar (para los buckets) el recurso de Cloud correspondiente.Si
disable_on_destroy
esfalse
,terraform destroy
quitará el recurso del estado de Terraform, pero dejará intacto el recurso de Cloud real (p.ej., la API habilitada o el bucket) en tu proyecto de Google Cloud . Esto suele ser preferible para los servicios críticos que no se deben inhabilitar o borrar accidentalmente.