Cómo migrar tfstates remotos en Terraform
En Terraform uno tiene la posibilidad de renombrar y mover recursos y módulos en un mismo tfstate tanto si es local como remoto. Pero cuando se quiere migrar de recursos o módulos entre tftstates remotos hay que tomar otras consideraciones.
Para resolver esto lo que se tiene que hacer es traerse la configuración remota, luego mover el recurso de forma local, y una vez que se haya movido, subir el cambio al tftstate remoto.
Veamos el procedimiento:
1) Traerse el tfstate remoto de destino:
Para mover los recursos de un tfstate a otro se necesita tener de forma local el tfstate destino:
$ terraform state pull > dev.tfstate
2) Mover el recurso o módulo a este tfstate local
En este ejemplo se desea mover el recurso module.lambda.module.your_funtion
a module.your_function
$ terraform state mv -state-out=dev.tfstate module.lambda.module.your_function module.your_function
3) Subir el cambio al tftstate remoto
El recurso se movió de un estado a otro, pero se hizo de forma local. Para que quede en el tftstate remoto de destino se debe subir:
$ terraform state push dev.tfstate
En algunos casos puede requerirse el uso de la opción -force
, por ejemplo cuando se tuvo problemas con la inicialización del módulo , por lo que la orden anterior quedaría de la siguiente manera:
$ terraform state push -force dev.tfstate
Por último, y una vez que haya comprobado que todo está correctamente, puede borrar el tftstate local:
$ rm dev.tfstate*
Leave a Comment