Volver al blog
terraformiacawsplatform-engineering

Terraform funciona, pero nadie se atreve a tocarlo: cómo saber si tu IaC necesita orden

Cómo detectar cuándo Terraform se ha convertido en una fuente de riesgo operativo y qué ordenar primero sin hacer una reescritura completa.

Terraform funciona, pero nadie se atreve a tocarlo: cómo saber si tu IaC necesita orden

Terraform puede aplicar cambios correctamente y, aun así, haberse convertido en un riesgo operativo.

No siempre se nota por un apply fallido. A veces la señal es más silenciosa: el equipo evita tocarlo. Un cambio pequeño se pospone, solo una persona entiende los módulos, revisar un plan genera tensión y cualquier ajuste de infraestructura parece más delicado de lo normal.

Para un CTO, founder, engineering manager o technical lead con AWS en producción, esa situación importa. La infraestructura como código debería dar control y trazabilidad, no convertirse en una caja negra que frena al equipo.

La respuesta rara vez debería empezar por “reescribamos todo Terraform”. Muchas plataformas necesitan algo menos vistoso y más útil: ordenar las piezas que permiten volver a cambiar infraestructura con confianza.

La señal no es solo que Terraform falle

Cuando Terraform falla de forma evidente, el problema suele verse pronto: un recurso no se crea, falta un permiso o hay una dependencia mal definida.

Lo difícil es cuando todo parece funcionar, pero el equipo ha aprendido a no tocar demasiado.

Ese miedo suele aparecer por acumulación. Al principio hay una estructura razonable. Después llegan urgencias, excepciones, módulos copiados, cambios manuales, entornos poco claros y decisiones que nadie documentó. Con el tiempo, Terraform deja de ser una herramienta compartida y se convierte en un territorio que solo unos pocos entienden.

El problema no es Terraform en abstracto. Terraform necesita state para relacionar la configuración declarada con los recursos reales y decidir qué cambios propone o aplica. También permite revisar planes antes de ejecutar cambios. La fragilidad aparece cuando el equipo no entiende cómo se gobiernan esas piezas.

Estas son señales de que tu IaC necesita orden.

1. El state es una caja negra para casi todo el equipo

El state es una pieza crítica de Terraform. Si nadie sabe dónde vive, quién puede acceder, cómo se protege o qué backend se usa, el equipo está operando con una dependencia importante sin suficiente visibilidad.

Eso no significa que todo el mundo tenga que manipular el state. Al contrario: conviene evitar tratarlo como un archivo cualquiera. Pero sí debería existir claridad básica: dónde está, cómo se bloquean operaciones concurrentes si el backend lo soporta, qué permisos existen y qué pasaría si alguien ejecuta cambios desde el lugar incorrecto.

Cuando el state es una caja negra, cada cambio se interpreta como una apuesta. No porque vaya a romperse siempre, sino porque nadie puede explicar bien qué está en juego.

2. Los entornos no están separados con claridad

Otra señal común es que dev, staging y producción existen de nombre, pero no como límites operativos claros.

A veces comparten demasiada configuración. Otras veces cada entorno se ha construido de una forma distinta. También puede ocurrir que no esté claro qué variables cambian entre entornos, qué módulos se reutilizan, qué cuentas AWS intervienen o qué flujo permite promover cambios de forma segura.

No hay una estructura correcta para todos los equipos. Workspaces, carpetas, repositorios separados o cuentas distintas pueden tener sentido según el contexto. Lo importante es que el modelo sea comprensible y permita responder preguntas simples: qué estoy cambiando, dónde lo estoy cambiando y qué impacto puede tener.

Si responder eso requiere preguntar siempre a la misma persona, el problema no es solo técnico. Es de ownership.

3. Los módulos abstraen tanto que nadie sabe qué crean

Los módulos son útiles cuando encapsulan patrones repetibles y elevan el nivel de conversación. El problema aparece cuando se convierten en una capa de abstracción que oculta decisiones que el equipo necesita entender.

Un módulo demasiado genérico, demasiado configurable o poco documentado puede hacer que un cambio pequeño tenga consecuencias difíciles de anticipar. También puede dejar al equipo en una duda permanente: modificar el módulo, duplicarlo, saltárselo o crear otra excepción.

La pregunta no es “¿usamos módulos o no?”. La pregunta es si los módulos ayudan al equipo a operar mejor.

Un buen módulo reduce repetición y hace explícitas decisiones importantes. Un mal módulo convierte la infraestructura en un puzzle donde todo depende de variables, convenciones y contexto que no está escrito en ninguna parte.

4. El plan no se revisa: se acepta por confianza o por cansancio

terraform plan existe para anticipar cambios antes de aplicarlos. Pero en muchos equipos la revisión real del plan se degrada con el tiempo.

Se mira por encima. Se confía en que no habrá sorpresas. Se acepta porque el cambio parece pequeño. O se deja en manos de la única persona que “entiende Terraform”.

Esa dinámica es peligrosa, no porque cada plan sea difícil, sino porque elimina una de las mejores oportunidades para detectar impacto antes de tocar infraestructura.

Una revisión sana no necesita una ceremonia pesada. Necesita que el plan sea legible, que el cambio tenga contexto, que las personas adecuadas puedan revisarlo y que producción no dependa de aplicar algo que nadie se ha atrevido a cuestionar.

Si el equipo ejecuta planes que no entiende, Terraform deja de ser control y se parece demasiado a esperanza.

5. Hay drift y cambios manuales que nadie quiere reconocer

El drift aparece cuando la realidad y la configuración dejan de coincidir. Puede ocurrir por cambios manuales, urgencias, pruebas, hotfixes o recursos creados fuera de Terraform.

El problema no es que ocurra una vez. En plataformas reales, las excepciones existen. El problema es no tener un proceso para detectarlo, entenderlo y decidir si se corrige en código o se acepta como decisión explícita.

Cuando el drift se normaliza, el equipo empieza a desconfiar de Terraform. Ya no sabe si el código representa producción, si un plan va a intentar revertir algo importante o si hay recursos críticos que viven fuera del modelo declarado.

Ordenar IaC no significa perseguir una pureza imposible. Significa que las excepciones no sean invisibles.

6. Secretos, permisos y accesos están mezclados con poca intención

La gestión de secretos y permisos merece especial cuidado. Terraform puede necesitar credenciales, tokens o valores sensibles, y tanto el state como ciertos archivos de plan pueden contener información delicada.

Por eso conviene revisar cómo se separan responsabilidades: quién puede leer, quién puede aplicar, dónde se guardan variables sensibles, qué permisos tiene el pipeline y qué acceso real existe al backend.

No hace falta convertir un artículo diagnóstico en una guía de seguridad. Pero si nadie puede explicar con claridad qué información sensible toca Terraform y quién puede verla, hay que ordenar antes de escalar el uso de IaC.

En este punto, la prudencia vale más que la heroicidad.

7. El conocimiento vive en una sola persona

La señal más humana de todas: “esto mejor que lo toque X”.

Puede que X sea brillante. Puede que la plataforma funcione gracias a su criterio. Pero si el sistema depende de que una persona concreta revise cada plan, recuerde cada excepción y sepa qué módulo no conviene tocar, el equipo tiene una fragilidad organizativa.

La infraestructura como código debería facilitar colaboración. Si se convierte en un lenguaje privado, algo se ha torcido.

No se soluciona pidiendo a todo el mundo que sea experto en cada recurso. Se soluciona haciendo visible lo esencial: estructura, ownership, flujo de revisión, decisiones importantes y límites de seguridad.

Qué ordenar primero sin reescribir toda la infraestructura

Cuando Terraform da miedo, la tentación puede ser plantear una reescritura completa. A veces será necesaria, pero no debería ser el punto de partida por defecto.

Antes conviene hacer un diagnóstico más sobrio:

  • dónde vive el state y cómo se protege;
  • cómo se separan entornos y cuentas;
  • qué módulos son críticos y cuáles generan más confusión;
  • cómo se revisan planes antes de aplicar;
  • qué drift existe y cómo se decide qué hacer con él;
  • qué secretos o datos sensibles pueden aparecer en state o planes;
  • quién es owner de cada parte y qué documentación mínima falta.

Con esa foto, es más fácil priorizar. Quizá lo primero sea ordenar backend y permisos. O separar entornos. O simplificar dos módulos que concentran demasiada complejidad. O introducir validaciones y revisión en pull request. O documentar los flujos que hoy dependen de memoria tribal.

Lo importante es no confundir ordenar con rehacer.

Una plataforma heredada puede mejorar por capas. Suele ser más realista: reducir riesgo, recuperar confianza y permitir cambios pequeños sin bloquear producto.

Cuándo tiene sentido pedir una revisión externa

Una revisión externa de Terraform y fundamentos AWS puede tener sentido cuando el equipo ya sabe que hay fricción, pero no tiene claro por dónde empezar.

Especialmente si Terraform funciona, pero cada cambio importante exige demasiada cautela. Si el state no está claro. Si los módulos no se entienden. Si producción depende de una sola persona. Si nadie se fía del plan. O si el equipo sospecha que hay drift, secretos o permisos mezclados de forma difícil de sostener.

La revisión no debería acabar en una lista genérica de buenas prácticas. Debería separar lo urgente de lo secundario y proponer un orden razonable: qué tocar primero, qué dejar quieto, qué documentar y qué evitar convertir en una reescritura innecesaria.

Terraform no debería ser una fuente de miedo.

Debería ser una forma de cambiar infraestructura con más claridad, trazabilidad y control. Si hoy funciona pero nadie se atreve a tocarlo, quizá no necesitas empezar de cero. Quizá necesitas ordenar lo suficiente para que el equipo vuelva a confiar en lo que ya tiene.

AR

Alejandro Rodríguez

Consultor Cloud & DevOps Freelance, Madrid