Refactorización del estado con moved y removed
Cambie de nombre y reestructure recursos de forma segura sin destruir la infraestructura mediante comandos de manipulación del estado y los bloques declarativos moved y removed.
Refactorización del estado con moved y removed es una lección gratuita de Terraform Infrastructure as Code en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Terraform Infrastructure as Code, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.
El problema de cambiar nombres
Cuando cambia el nombre de un recurso en su configuración, Terraform interpreta que la dirección anterior ha desaparecido y que aparece una nueva. De forma predeterminada, destruirá y volverá a crear el recurso, lo que puede provocar tiempo de inactividad o pérdida de datos.
Las herramientas de refactorización del estado permiten indicar a Terraform que el recurso simplemente se ha movido.
Inspección del estado
Comience enumerando lo que se registra en el estado. El comando terraform state list muestra la dirección de cada recurso administrado.
terraform state liststate mv imperativo
El enfoque clásico es terraform state mv, que reescribe la dirección de un recurso en el estado. Aquí cambiamos una instancia de aws_instance.web a aws_instance.app.
terraform state mv aws_instance.web aws_instance.appLa desventaja de state mv
state mv es una acción manual y puntual de la CLI. No queda registrada en el código, por lo que los compañeros que ejecuten el mismo cambio en sus equipos deben repetirla. Esto propicia errores en los flujos de trabajo colaborativos.
Bloques moved declarativos
El bloque moved registra un cambio de nombre en su configuración. Terraform lo aplica automáticamente para todos durante el siguiente plan; después puede eliminar el bloque.
moved {
from = aws_instance.web
to = aws_instance.app
}Mover recursos a un módulo
Los bloques moved también permiten incluir recursos en un módulo. La dirección de destino incluye la ruta del módulo.
moved {
from = aws_instance.app
to = module.compute.aws_instance.app
}Verificación con un plan
Después de añadir un bloque moved, ejecute terraform plan. Un movimiento correcto no muestra ninguna destrucción ni creación, solo un cambio de dirección. Si todavía aparece una sustitución, el bloque es incorrecto.
terraform planEliminar del estado
A veces querrá que Terraform deje de administrar un recurso sin destruir la infraestructura real. El comando imperativo es terraform state rm.
terraform state rm aws_instance.legacyBloques removed declarativos
Las versiones recientes de Terraform admiten un bloque removed. Con lifecycle { destroy = false }, olvida el recurso del estado, pero deja intacta la infraestructura real.
removed {
from = aws_instance.legacy
lifecycle {
destroy = false
}
}División de archivos de estado
En proyectos grandes, terraform state mv -state-out puede mover recursos entre archivos de estado separados, lo que resulta útil al dividir un monolito en stacks que se aplican de forma independiente.
terraform state mv -state-out=network.tfstate \
aws_vpc.main aws_vpc.mainCopias de seguridad y seguridad
Terraform escribe un archivo .backup antes de modificar el estado. Aun así, con backends remotos confirme siempre que ningún compañero tenga bloqueado el estado antes de realizar operaciones manuales, para evitar daños.
Comprobación rápida
Compruebe sus conocimientos sobre refactorización.
Resumen: refactorización segura del estado
Ahora puede reestructurar la infraestructura sin destruirla:
state mv/state rmpara cambios imperativos.- Bloques
movedpara cambios de nombre declarativos. - Bloques
removedpara olvidar recursos sin destruirlos. - Verifique siempre con un plan que no muestre ninguna sustitución.
Preguntas frecuentes
¿La lección «Refactorización del estado con moved y removed» es gratis?
Sí — el texto completo de «Refactorización del estado con moved y removed» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Terraform Infrastructure as Code, actualiza a CoddyKit PRO. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.
¿Qué aprenderé en «Refactorización del estado con moved y removed»?
Cambie de nombre y reestructure recursos de forma segura sin destruir la infraestructura mediante comandos de manipulación del estado y los bloques declarativos moved y removed. Practicas Terraform Infrastructure as Code con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Terraform Infrastructure as Code?
No se requiere experiencia previa. Terraform Infrastructure as Code en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Refactorización del estado con moved y removed»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Terraform Infrastructure as Code?
Sí. Cada lección de Terraform Infrastructure as Code incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Backends de estado remoto
- Bloqueo y coherencia del estado
- Importación de recursos existentes
- Refactorización del estado con moved y removed