☁️ Terraform Cloud / HCP Terraform: Gobernanza y Automatización Enterprise
Terraform Cloud (actualmente parte de HCP Terraform) es la plataforma SaaS administrada por HashiCorp diseñada para facilitar el aprovisionamiento continuo, la colaboración en equipo, la gestión centralizada del estado y la gobernanza de seguridad en la infraestructura como código.
1. ¿Qué es Terraform Cloud y qué problemas resuelve?
Mientras que el CLI local de Terraform requiere que configures manualmente credenciales de la nube, backends remotos y ejecuciones en tu maquina local o runners de CI/CD, Terraform Cloud ofrece una plataforma centralizada que resuelve:
- Ejecuciones Remotas Consistentes: Los comandos
planyapplyse ejecutan dentro de contenedores efímeros seguros en la nube de HashiCorp. - Gestión de Estado Centralizada e Imputable: Audit trail de quién ejecutó qué cambio, historial completo de versiones del `tfstate` y descompresión segura.
- Control de Accesos (RBAC): Integración con Single Sign-On (SSO / Okta / Entra ID) y definición de roles granulares para desarrolladores y DevOps.
2. Workspaces en Terraform Cloud vs CLI Workspaces
.tfstate) para el mismo código HCL. En Terraform Cloud, un Workspace incluye el archivo de estado, las variables de entorno/secretos, las conexiones Git VCS, los disparadores automáticos y las reglas de aprobación.
3. Integración con Git (VCS-driven Workflow)
Terraform Cloud se conecta directamente con GitHub, GitLab, Bitbucket o Azure DevOps. Esto habilita un flujo GitOps automatizado:
- Un desarrollador abre un Pull Request en GitHub.
- Terraform Cloud detecta el cambio y ejecuta automáticamente un
terraform planespeculativo, comentando el resultado directamente en el PR. - Al aprobar y hacer Merge a main, Terraform Cloud dispara el
terraform apply(pudiendo exigir aprobación manual previa).
4. Variable Sets y Manejo Seguro de Secretos
En lugar de repartir credenciales de AWS/Azure entre decenas de repositorios, Terraform Cloud permite crear **Variable Sets** globales o compartidos:
- Environment Variables: Credenciales de la nube (ejemplo:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYmarcada como Sensitive para no ser visible jamás en logs). - Terraform Variables: Parámetros HCL que se inyectan dinámicamente en los proyectos (ejemplo:
environment = "production"). - Integración Dinámica OIDC: Autenticación Passwordless mediante tokens JWT temporales con AWS IAM, GCP Workload Identity o Azure Federated Credentials.
5. Policy as Code (Sentinel & OPA / Open Policy Agent)
Para prevenir desastres de seguridad antes de que ocurran en la nube, Terraform Cloud permite evaluar el `plan` generado contra políticas institucionales obligatorias:
# Sentinel Policy
import "tfplan/v2" as tfplan
# Todos los buckets S3 creados deben ser privados
main = rule {
all tfplan.resources.aws_s3_bucket as _, bucket {
bucket.applied.acl != "public-read"
}
}
6. Private Module & Provider Registry
Las empresas pueden publicar y catalogar sus propios Módulos de Terraform internos dentro del **Private Registry** de su organización en Terraform Cloud, permitiendo a los desarrolladores consumir módulos auditados y aprobados por el equipo de seguridad.
7. Conectando tu Proyecto Local a Terraform Cloud
Para vincular tu proyecto local con Terraform Cloud, agrega el bloque cloud {} dentro del bloque terraform {} en tu archivo HCL:
terraform {
required_version = ">= 1.7.0"
# Configuración del Backend SaaS de Terraform Cloud (HCP)
cloud {
organization = "maxis-computers-org"
workspaces {
name = "mc-platform-production"
}
}
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
# Login interactivo en la terminal para obtener token de API
terraform login
# Inicializa y sincroniza el Workspace remoto
terraform init
# Ejecuta el plan en los servidores de Terraform Cloud
terraform plan