Cómo migrar tfstates remotos en Terraform

1 minute read

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*

Referencias:

Leave a Comment