Definitivamente hay ejemplos más complejos. Y ahora, si te muestro el archivo main.tf que contiene el módulo para mi pipeline del front end, verás que aquí estoy utilizando la API de datos de Terraform y esta es una forma muy útil de obtener fuentes existentes. Aquí estoy obteniendo mi secreto que creé para GitHub y esta es una forma muy útil de obtenerlo e inyectarlo en algunos de los recursos que estás creando, lo mantiene seguro y no se filtra ninguna información sensible de ninguna manera.
Y aquí, similar al módulo que te mostré anteriormente, porque hay algunos recursos adicionales que estoy configurando, obviamente hay más valores que se deben o propiedades que se deben completar aquí y todos estos son solo variables. Aquí puedes ver el nombre de mi aplicación, que estoy utilizando en todo el proyecto, el destino del bucket de S3, el nombre del bucket del pipeline y el nombre del bucket de CodeBuild. En caso de que te preguntes para qué son, no están relacionados con el bucket de S3 para el alojamiento de un sitio estático, principalmente funcionan para fines de caché para que cuando se instalen dependencias en nuestro pipeline, la caché haga que las cosas sean mucho más rápidas en cada ejecución sucesiva del pipeline.
De acuerdo, por último, llegamos a infra live y aquí verás que he dividido las carpetas en los entornos correspondientes y lo que tenemos es un pipeline de CICD y una aplicación web, reflejando los módulos que realmente tenemos y también voy a abrir mi archivo de configuración Terragon, el archivo principal. Y uno de los archivos secundarios. El archivo principal se utiliza para generar un proveedor y el proveedor es lo que obviamente vamos a utilizar para especificar el proveedor de nube que queremos utilizar para construir nuestra infraestructura. Especifico la región en la que quiero que se construyan mis recursos y el perfil que voy a utilizar para eso. Además, puedes especificar información adicional en términos de las versiones que quieres usar para la API. En este caso particular para AWS, qué versión quiero utilizar y qué versión de Terraform también voy a utilizar. Y aquí, muy importante, este último bloque, los estados remotos y el estado se utilizan para realizar un seguimiento de todos los recursos que se han creado o que están activos o se han implementado. Y así debe haber una forma óptima de realizar un seguimiento de esos recursos. Y así puedes tener eso configurado localmente o de forma remota. Una buena práctica es tenerlo configurado de forma remota porque si está local y algo sucede con ese archivo local, entonces no tienes una forma de realizar un seguimiento de lo que se ha construido. Y así estoy utilizando S3 para almacenar un archivo de estado de Terraform, como puedes ver aquí. Y ese archivo de estado de Terraform es esencialmente un archivo JSON que contiene todos los recursos que se han construido. Además, estoy utilizando el bloqueo de estados y mi bloqueo de estados se realiza utilizando una tabla DynamoDB. Esto es muy útil cuando se trabaja en equipo porque lo que sucede es que cuando se utiliza el bloqueo de estados, proporciona un enfoque de protección para tener varias personas trabajando en el mismo tipo de estado. Y así, cuando una persona está implementando algo o está en medio de alguna ejecución, entonces, en esencia, el estado estará bloqueado para que nadie más actúe sobre él, lo cual es una gran medida de protección cuando se trabaja en equipo. Disculpa por el ruido de fondo. Y ahora te voy a mostrar un archivo de configuración secundario de TerraGrant aquí. Y este archivo de configuración secundario de TerraGrant es para el pipeline de CICD. El de la aplicación web o el sitio web se verá muy, muy similar. Solo voy a colapsar esto aquí y dentro de él, para el pipeline, especifico el nombre de la rama y el entorno. Y esta es una forma agradable de mantener las cosas DRY, como mencioné, lo que TerraGrant te ofrece es todos los pasos de la CLI que tendrías en Terraform, pero esencialmente hace que las cosas sean más eficientes con estos archivos de configuración. Y ejecuta todos esos comandos en segundo plano, es esencialmente un envoltorio. Algo a lo que quiero llamar tu atención aquí es este bloque de Terraform, y apunta al módulo en particular desde el que vas a implementar recursos. Y además de eso, puedes tener algunas variables comunes y podrá obtenerlas de las carpetas principales.
Comments