La verdad es que hasta ahora no he podido encontrar una plataforma que me termine de gustar más, si Azure DevOps o Github. Como sea, ambas se me hacen una herramienta fundamental para trabajar con DevOps. Ya hablé como en un escenario nativo de nube la parte de infraestructura es sumamente importante y tener una herramienta como Terraform es muy importante.
Guardar el estado en almacenamiento por medio de un archivo backend es una buena idea. Puedes ver un artículo al respecto aquí. Así que hacerlo por medio de una Github Action suena a un buen paso a cubrir en aras de automatizar este proceso.
Usemos el escenario que ya tenemos cubierto en el artículo de Terraform y Github Actions en donde lo único que necesitamos ahora es agregar la parte para configurar el backend.
Agrega en tu estructura de archivos uno nuevo llamado backend.tf.

Como verás, dentro de este archivo requieres tres variables para el backend de Azure.
- storage_account_name: Es el nombre de la cuenta de almacenamiento que vas a utilizar.
- container_name: Es el nombre del contenedor de Blobs en donde vas a almacenar tu estado.
- key: Es el nombre del archivo que vas a crear, es importante que agreges la extensión del archivo (.tfstate).
Con estos tres valores. lo único que hace falta es agrgar la llave de acceso de tu cuenta de almacenamiento, si ejecutas este script en modo local no lo ncesitarás debido a que gracias a que estás habilitado desde CLI entonces Terraform lo tomará de ahí. Para las acciones de Github, lo que necesitas es crear una SAS (Storage Access Signature) en tu cuenta de almacenamiento.

El valor de tu SAS lo debes agregar en los secretos de Github.

Ahora, lo único que necesitas es agregar un parámetro enviado para el comando de terraform init en tu secuencia de pasos en una acción.

El argumento –backend-config me permite pasarle los valores que requiera al archivo de configuración de mi backend tales como el valor sas_token que requiero. De esta manera podré iniciar el backend remoto en Azure sin ningún problema de seguridad. Y esperar un resultado satisfactorio.
1 comentario en «Guarda el estado de Terraform usando Github Actions»