Prácticas recomendadas para las operaciones de Terraform

En este documento, se proporcionan lineamientos y recomendaciones para las operaciones de Terraform.

Esta guía no es una introducción a Terraform. Para obtener una introducción al uso de Terraform con Google Cloud, consulta Comienza a usar Terraform.

Siempre planifica primero

Siempre genera primero un plan para las ejecuciones de Terraform. Guarda el plan en un archivo de salida. Después de que un propietario de la infraestructura lo apruebe, ejecuta el plan. Incluso cuando los desarrolladores prototipan cambios de forma local, deben generar un plan y revisar los recursos que se agregarán, modificarán y destruirán antes de aplicar el plan.

Implementa una canalización automatizada

Para garantizar un contexto de ejecución coherente, ejecuta Terraform a través de herramientas automatizadas. Si un sistema de compilación (como Jenkins) ya está en uso y se adopta de forma amplia, úsalo para ejecutar los comandos de terraform plan y terraform apply automáticamente. Si no hay un sistema existente disponible, adopta Cloud Build o Terraform Cloud.

Usa las credenciales de la cuenta de servicio para la integración continua

Cuando Terraform se ejecuta desde una máquina en una canalización de CI/CD, debe heredar las credenciales de la cuenta de servicio del servicio que ejecuta la canalización. Siempre que sea posible, ejecuta canalizaciones de CI en Google Cloud porque Cloud Build, Google Kubernetes Engine o Compute Engine insertan credenciales sin descargar claves de cuenta de servicio.

Para las canalizaciones que se ejecutan fuera de Google Cloud, prefiere la federación de Workload Identity a fin de obtener credenciales sin descargar claves de cuenta de servicio.

Evita importar recursos existentes

Siempre que sea posible, evita importar recursos existentes (mediante terraform import), ya que esto puede dificultar la comprensión de la procedencia y la configuración de los recursos creados de forma manual. En su lugar, crea recursos nuevos a través de Terraform y borra los recursos anteriores.

En los casos en los que borrar recursos anteriores crearía un trabajo repetitivo significativo, usa el comando terraform import con aprobación explícita. Después de importar un recurso a Terraform, adminístralo de forma exclusiva con Terraform.

Google proporciona una herramienta que puedes usar para importar tus recursos de Google Cloud al estado de Terraform. Para obtener más información, consulta Importa tus recursos de Google Cloud al estado de Terraform.

No modifiques el estado de Terraform de forma manual

El archivo de estado de Terraform es fundamental para mantener la asignación entre la configuración de Terraform y los recursos de Google Cloud. Los daños pueden generar problemas importantes de infraestructura. Cuando se necesiten modificaciones en el estado de Terraform, usa el comando terraform state.

Revisa los marcadores de versión de forma periódica

Fijar versiones garantiza la estabilidad, pero evita que se incorporen correcciones de errores y otras mejoras en tu configuración. Por lo tanto, revisa de forma periódica los marcadores de versión para Terraform, los proveedores de Terraform y los módulos.

Para automatizar este proceso, usa una herramienta como Dependabot.

Usa credenciales predeterminadas de la aplicación cuando ejecutes de forma local

Cuando los desarrolladores realizan iteraciones de forma local en la configuración de Terraform, deben autenticarlas mediante la ejecución de gcloud auth application-default login para generar las credenciales predeterminadas de la aplicación. No descargues claves de cuenta de servicio, ya que las claves descargadas son más difíciles de administrar y proteger.

Establece alias para Terraform

Para facilitar el desarrollo local, puedes agregar alias a tu perfil de shell del comando:

  • alias tf="terraform"
  • alias terrafrom="terraform"

¿Qué sigue?