Dashboard Terraform: revisá riesgos antes del apply
Un dashboard de Terraform es una herramienta que convierte la salida JSON de terraform plan en una vista interactiva de alto nivel, donde los cambios críticos (destrucciones, modificaciones de recursos sensibles) se destacan visualmente en vez de perderse entre cientos de líneas de texto. Praveen Ha publicó el 15 de mayo de 2026 en dev.to una implementación concreta basada en Python que actúa como motor de evaluación de riesgos antes de cualquier terraform apply.
En 30 segundos
- La salida estándar de
terraform planno diferencia visualmente entre borrar una base de datos y cambiar un tag: ese es el problema real. - Planes con 500+ cambios son imposibles de revisar a mano sin perder algo crítico.
- La solución: convertir el JSON del plan en un dashboard HTML interactivo con Python (
tf_impact.py) que categoriza riesgos por nivel (crítico/alto/medio/bajo). - El flujo completo consta de tres comandos y se integra directo en cualquier pipeline CI/CD.
- El resultado sirve tanto para auditoría técnica como para mostrarle a un manager qué va a cambiar antes de apretar Apply.
El problema: el “muro de texto” del dashboard Terraform
Ponele que tenés un plan de Terraform con 600 cambios coordinados: una migración de Squid Proxy a Google Secure Web Proxy. Todo en una terminal. Todo en el mismo color. El destroy de una instancia RDS que tira abajo producción se ve idéntico a cambiar la etiqueta Environment: dev de un bucket S3.
Eso no es un problema de disciplina del equipo. Es un problema de diseño: la salida del CLI está hecha para logs, no para auditoría humana.
Según el artículo publicado por Praveen Ha, hay tres desafíos concretos que enfrentás en entornos enterprise:
- Risk Blindness: recursos críticos como RDS instances, S3 buckets o roles IAM se mezclan con cambios menores sin ningún indicador visual de severidad.
- Scale Issues: con 500 o más cambios en un plan, la revisión manual no es lenta, directamente es imposible. Algo se va a pasar por alto.
- Stakeholder Gap: un manager o un auditor de seguridad no puede aprobar un wall of text en la terminal. Necesita algo que pueda leer en cinco minutos.
Riesgos invisibles en cambios de infraestructura
El escenario que describe Ha es el de una migración técnica compleja donde el riesgo real no es que algo falle al aplicar el plan, sino que alguien lo apruebe sin haber visto el destroy escondido en la línea 847 de la salida.
¿Y qué pasa cuando eso ocurre en producción? Exacto: downtime, rollback de emergencia, postmortem incómodo.
La “inteligencia” de la revisión manual tiene un techo muy bajo. A partir de cierta escala, el ojo humano simplemente no detecta patrones de riesgo dentro de texto plano sin estructura jerárquica. No es opinión: es cómo funciona la cognición. Acá no hay vuelta. Relacionado: gestión de bases de datos empresariales.
Solución: dashboard de impacto con automatización
La propuesta de Ha es un script Python (tf_impact.py) que toma el output JSON de Terraform y genera un dashboard HTML interactivo. La aclaración que hace el autor es importante: no es un formateador bonito. Es un motor de evaluación de riesgos.
La diferencia no es cosmética: un formateador te muestra los mismos datos con mejor tipografía. Un motor de evaluación de riesgos categoriza, prioriza y destaca lo que podría romperte la noche. Son cosas distintas.
El output del dashboard segrega los cambios en niveles de severidad, pone los recursos marcados para destrucción al tope de la vista, y genera un HTML que podés compartir por mail, subir a S3, o embeber en un reporte de aprobación de cambios.
Implementación técnica: del CLI al dashboard
El flujo consta de tres pasos:
- Paso 1:
terraform plan -out=main.tfplan— generás el plan en formato binario. - Paso 2:
terraform show -json main.tfplan > plan.json— convertís el plan binario a JSON estructurado que podés parsear. - Paso 3:
python3 tf_impact.py plan.json— el script analiza el JSON y genera el dashboard HTML.
Por qué Python y no Bash o Go: el JSON de terraform show puede tener estructuras anidadas complejas, y Python tiene las librerías para recorrerlo sin dramas. Eso sí, la ventaja real es que cualquier equipo con conocimientos básicos de Python puede extender tf_impact.py para agregar reglas de riesgo propias, integrar con Slack, o generar reportes en PDF.
La integración con CI/CD es directa: metés los tres comandos como pasos de un job en GitHub Actions, GitLab CI o AWS CodePipeline, y el dashboard se genera automáticamente en cada PR que toque infraestructura. Podés hacer que el pipeline falle si detecta destrucciones de recursos críticos sin una aprobación manual.
Características del dashboard enterprise
Lo que distingue esta implementación de simplemente formatear el output de Terraform es la capa de análisis que interpreta qué cambia y qué riesgo implica. Esto se cubre en detalle en nuestro artículo sobre pipelines de CI/CD modernos.
- Categorización de cambios por nivel: crítico (destrucciones de recursos de datos), alto (modificaciones de configuraciones de red o IAM), medio (cambios en instancias o servicios), bajo (updates de tags o metadatos).
- Vista dedicada de recursos marcados para
destroy, separada del resto. - Detección de patrones de cambio inusuales que no deberían estar en ese ambiente (ej: destroy de una RDS en producción cuando el plan apunta a staging).
- HTML exportable para compartir con stakeholders sin acceso a la terminal.
Para auditoría de conformidad, esto resuelve un problema concreto: el auditor de seguridad no tiene por qué tener acceso al estado de Terraform ni a la terminal. El dashboard le da lo que necesita para firmar la aprobación.
Integración en pipelines CI/CD seguros
El lugar natural del dashboard es entre el plan y el apply. En un pipeline bien armado, el flujo se ve así: el desarrollador abre un PR con cambios de infraestructura, el pipeline corre terraform plan, genera el JSON, ejecuta tf_impact.py, y publica el dashboard como artefacto o como comentario automático en el PR.
Un aprobador humano revisa el dashboard (no el diff crudo) y da el ok. Recién entonces el pipeline tiene autorización para ejecutar terraform apply.
Para trazabilidad completa, Git ya te da el historial de quién propuso qué cambio. AWS CloudTrail o Azure Monitor te dan el registro de qué se aplicó y cuándo. Con ambos combinados, tenés una cadena de custodia auditable de cada modificación de infraestructura.
Si gestionás tu infraestructura en la nube y buscás un hosting confiable para los artefactos o pipelines, donweb.com tiene opciones de cloud y VPS que encajan bien con este tipo de flujos.
Casos de uso reales donde esto marca diferencia
Migraciones técnicas complejas
El caso que documenta Ha es una migración de Squid Proxy a Google Secure Web Proxy. En ese contexto, el plan toca múltiples recursos coordinados: reglas de firewall, configuraciones de red, políticas IAM, y potencialmente instancias que dejan de ser necesarias. Un destroy accidental en ese contexto puede dejar sin salida a internet a toda una capa de servicios.
Aprobaciones de conformidad
Equipos que trabajan bajo marcos de auditoría (SOC 2, ISO 27001, PCI DSS) necesitan evidencia de que alguien revisó y aprobó cada cambio de infraestructura. Un dashboard exportable con la firma digital del aprobador y timestamp cumple ese requisito de forma que el output de terminal nunca podría cumplir. Ya lo cubrimos antes en modelos de IA para análisis.
Reducción de downtime por conflictos no detectados
Dos equipos modificando infraestructura compartida en el mismo sprint es una receta para conflictos de recursos. Si el dashboard categoriza cambios por módulo y equipo, los conflictos potenciales aparecen antes del apply, no después.
Herramientas complementarias
| Herramienta | Qué hace | Se combina con el dashboard |
|---|---|---|
| Infracost | Estimación de costos de cambios de infraestructura | Sí: agregás columna de costo estimado por recurso |
| Terrascan | Validación de políticas de seguridad en el plan | Sí: el dashboard puede mostrar violations detectadas |
| TFSwitch | Gestión de versiones de Terraform en el equipo | Indirecto: asegura que todos generan el plan con la misma versión |
| tfsec | Análisis estático de configuraciones Terraform | Sí: sus outputs son JSON parseables por el mismo pipeline |

Ninguna de estas herramientas reemplaza al dashboard. Se complementan: Infracost te dice cuánto va a costar, Terrascan te dice si hay violaciones de política, y el dashboard te dice qué va a cambiar y qué nivel de riesgo implica cada cambio.
Errores comunes al implementar revisión de planes Terraform
Revisar el plan solo en la terminal
El error más común es pensar que el output de terraform plan es suficiente para una revisión seria. Para planes pequeños (menos de 20 cambios), zafa. A partir de 50 cambios, la probabilidad de perder algo crítico crece de forma no lineal. Generá el JSON y procesalo.
Usar el mismo rol para planificar y aplicar
Si el CI/CD usa el mismo set de credenciales para plan y apply, cualquier run de plan en un PR podría escalar a un apply accidental ante un bug en el pipeline. Usá roles IAM separados: uno con permisos de solo lectura para el plan, otro con permisos de escritura para el apply, activado solo después de aprobación manual.
No versionar el estado de Terraform
Si el tfstate no tiene versionado habilitado en el backend (S3 con versioning, Terraform Cloud, Azure Blob con soft delete), un apply que sale mal puede dejar el estado corrupto sin forma de volver atrás. El dashboard te muestra qué va a cambiar, pero si el estado se rompe, necesitás poder restaurar la versión anterior.
Aprobar el plan sin leer el dashboard
El dashboard existe para ser leído. Si el proceso de aprobación se convierte en “el pipeline generó el HTML, alguien hizo click en Approve sin abrirlo”, no ganaste nada. El flujo tiene que incluir evidencia de revisión: tiempo mínimo en la página del dashboard, o campos obligatorios que el aprobador llena antes de poder aprobar. En configuración en múltiples entornos profundizamos sobre esto.
Preguntas Frecuentes
¿Cómo visualizar los cambios de Terraform antes de aplicarlos a producción?
Convertí el plan binario a JSON con terraform show -json main.tfplan > plan.json y procesalo con una herramienta como tf_impact.py. El resultado es un dashboard HTML con los cambios categorizados por nivel de riesgo, donde las destrucciones y modificaciones críticas quedan separadas visualmente del resto. Ese HTML lo podés compartir con cualquier stakeholder sin que tenga acceso a la terminal.
¿Qué herramientas existen para auditar planes Terraform?
Las más usadas son: dashboards personalizados como el de Ha (Python + HTML), Infracost para análisis de costos, Terrascan y tfsec para validación de políticas de seguridad, y las capacidades nativas de Terraform Cloud con plan reviews integrados. Para auditoría de conformidad, combinás el dashboard con CloudTrail (AWS) o Azure Monitor para tener el registro completo de quién aprobó qué y cuándo.
¿Cómo integrar un dashboard de Terraform en CI/CD?
El flujo estándar en GitHub Actions, GitLab CI o AWS CodePipeline es: (1) correr terraform plan -out=main.tfplan, (2) convertir a JSON con terraform show -json, (3) ejecutar el script de análisis, (4) publicar el HTML como artefacto del pipeline o como comentario automático en el PR. La aprobación manual del dashboard se configura como gate obligatorio antes de que el pipeline pueda ejecutar terraform apply.
¿Cuál es la mejor forma de revisar riesgos en cambios de infraestructura?
Separar el análisis de riesgos de la revisión del código. El dashboard de Terraform te da una vista de qué recursos cambian y con qué impacto, independientemente de cómo se vea el código HCL. Para recursos críticos (bases de datos, configuraciones de red, roles IAM), configurá reglas de detección automática que marquen el cambio como de revisión obligatoria antes del apply.
¿Cómo presentar cambios de Terraform a stakeholders no técnicos?
El HTML generado por el dashboard es el formato correcto: visualmente claro, sin sintaxis de CLI, con los cambios agrupados por nivel de impacto. Lo compartís como archivo adjunto o lo subís a un bucket S3 con URL pública temporal. El aprobador ve “8 recursos se crean, 2 se modifican, 1 se elimina (base de datos de staging)” sin necesidad de entender HCL ni JSON.
Conclusión
La propuesta de Ha no es un producto ni una plataforma: es un patrón de trabajo que cualquier equipo puede implementar con tres comandos y un script Python. Lo que cambia no es la tecnología, sino el momento en el que los riesgos se vuelven visibles: antes del apply, no después.
Para equipos que manejan infraestructura compleja a escala, el dashboard Terraform deja de ser una mejora de calidad de vida y se convierte en control de riesgo operacional. La diferencia entre un destroy que se ve en el dashboard a las 10 de la mañana y uno que aparece en el postmortem a las 3 de la madrugada es exactamente ese momento de visibilidad.
Si tu equipo todavía revisa los planes en la terminal, este es el momento de cambiar ese flujo.
Fuentes
- Praveen Ha en dev.to — Beyond the CLI: Building an Enterprise Terraform Impact Dashboard (2026)
- Pure Storage — Cómo funciona terraform plan
- AWS — Crear pipeline CI/CD para validar configuraciones Terraform con CodePipeline
- Microsoft Learn — Terraform en Azure: documentación oficial
- Firefly Academy — Terraform CI/CD: mejores prácticas






