Hace poco, trabajando en la infraestructura de un proyecto en la oficina, me enfrenté a un problema que casi rompe nuestro flujo de Terraform y amenaza la fecha límite. La tarea parecía sencilla: añadir un volumen EBS adicional a una instancia EC2 ya desplegada. En teoría, un cambio menor; en la práctica, cada vez que intentaba agregar ebs_block_device usando el módulo terraform-aws-modules/terraform-aws-ec2-instance, Terraform planificaba reemplazar por completo la instancia en lugar de simplemente crear y adjuntar el nuevo volumen.
Este comportamiento no era aceptable para un proyecto con plazos ajustados. Reemplazar una instancia implica retrasos en la entrega, riesgo de pérdida de datos si no se controla correctamente, necesidad de reconstruir configuraciones específicas de la instancia y una interrupción en la fase de pruebas. Aunque no era un entorno de producción, el impacto sobre el cronograma y la estabilidad era real.
Al investigar, descubrí que el problema venía de cómo el módulo manejaba la configuración de EBS. Con el proveedor AWS en versiones anteriores a 6.0.0 y el módulo en 5.8.0, cualquier modificación en los bloques de EBS se interpretaba como un cambio que requería el reemplazo de la instancia. Busqué soluciones: crear recursos aws_ebs_volume y aws_volume_attachment separados fuera del módulo, importar manualmente volúmenes al estado, o aplicar diferentes configuraciones. Ninguna opción me resultó suficientemente limpia.
En GitHub apareció un workaround compartido por la comunidad que implicaba manipular manualmente el estado de Terraform: eliminar instancias del state, reimportarlas y gestionar volúmenes como recursos independientes. Técnicamente funciona, pero manipular el state es arriesgado en entornos colaborativos y poco recomendable para proyectos críticos.
La solución definitiva llegó al actualizar el proveedor AWS a la versión 6.0.0 o posterior. El problema fue corregido en el proveedor, y después de actualizar también el módulo a la versión compatible y adaptar la forma de definir root volumes y EBS según la nueva versión, el proceso volvió a ser lo que debía: crear y adjuntar el nuevo volumen sin reemplazar la instancia.
Pasos prácticos que funcionaron
1 Actualizar el provider AWS a 6.0.0 o superior en la configuración de Terraform
2 Actualizar el módulo de EC2 a la versión compatible
3 Revisar y adaptar los bloques de root y ebs según la documentación de la versión nueva
4 Ejecutar terraform init -upgrade para descargar las versiones actualizadas
5 Ejecutar terraform plan para comprobar que solo se añadirá el volumen y no se reemplazará la instancia
6 Ejecutar terraform apply con confianza
Resultado final
Tras la actualización, añadir un volumen EBS fue una operación no disruptiva. No hubo necesidad de manipulaciones complejas del estado ni de separar recursos fuera del módulo. El flujo de infraestructura como código se mantuvo limpio y predecible.
Lecciones aprendidas
Mantener actualizados los proveedores es crucial porque muchas correcciones operacionales llegan a través de esas versiones. Conocer alternativas temporales puede salvar una entrega, pero la mejor solución suele ser la actualización oficial. La comunidad y la documentación fueron esenciales para identificar el problema y validar la solución. Y nunca dejar de usar terraform plan antes de aplicar cambios en infraestructuras críticas.
En Q2BSTUDIO, como empresa de desarrollo de software y aplicaciones a medida, aprendemos de cada incidente para mejorar nuestros procesos y ofrecer servicios más fiables. Si necesitas soporte en despliegues en la nube, migraciones o diseño de infraestructuras seguras y escalables, ofrecemos experiencia en servicios cloud AWS y Azure y en automatización de despliegues. También diseñamos soluciones de software a medida y aplicaciones a medida adaptadas a tus requisitos, combinando buenas prácticas de infraestructura con prácticas avanzadas de inteligencia artificial y ciberseguridad.
Si te interesa optimizar tus despliegues en la nube o recibir asesoría para evitar interrupciones y riesgos en tus entornos, en Q2BSTUDIO trabajamos con herramientas y metodologías modernas para minimizar estos impactos. Con experiencia en servicios de inteligencia de negocio y Power BI, IA para empresas y agentes IA, podemos integrar observabilidad, automatización y seguridad en tus pipelines. Conoce nuestras opciones de servicios cloud AWS y Azure o explora cómo desarrollamos aplicaciones a medida para resolver necesidades concretas.
Si alguna vez te has topado con un problema similar en Terraform, me encantaría leer tu experiencia y las soluciones que aplicaste. Compartir casos reales ayuda a toda la comunidad a reducir riesgos y a mejorar prácticas en infraestructuras cloud.