Como crear una infraestructura y desplegarla en Cactus.cloud.
El objetivo de este post será crear un proyecto de infraestructura, en este caso usaremos terraform y Cactus.cloud, algunas de las cosas que podremos lograr implementando proyectos de infraestructura en nuestra nube son las siguientes:
- Creación de una instancia EC2 en AWS
- Despliegue de una aplicación Web en Google Cloud
- Configuración de una red virtual en AWS
- Implementación de un clúster de bases de datos MySQL en GCP
- Automatización de copias de seguridad de datos con Terraform y AWS Backup
Para implementar cualquiera de estos proyectos tendremos que seguir estos pasos:
- Crear nuestro proyecto de infraestructura en local.
- Subirlo a un repositorio de git.
- Configurar nuestro proyecto dentro de Cactus.cloud y desplegarlo.
Una vez completamos estos tres pasos tendremos una infraestructura funcional desplegada en producción.
1. Crear nuestro proyecto de infraestructura en local.
1.1. Definimos las variables que vamos a usar.
Creamos un archivo en la base del proyecto llamado variables.tf y definiremos las siguientes variables y sus tipos:
1.2. Configuramos nuestro proveedor.
Creamos un archivo llamado main.tf, para este caso usaremos como provider AWS y usaremos las variables que definimos en variables.tf para hacer la configuración de nuestro provider, estas variables son inyectadas al momento del deploy automáticamente por la plataforma Cactus.cloud.
1.3. Configuraremos nuestra instancia de Terraform.
Aquí debemos definir la propiedad Backend de nuestro Terraform, esta propiedad define dónde se van a almacenar los archivos con los datos de estados, Terraform usa datos de estados persistentes para poder mantener una trayectoria de los recursos que maneja.
Volvemos a nuestro main.tf y definiremos que nuestro Backend será “http”.
1.4. Definimos una input para la zone de AWS Route53.
Aquí definiremos que la propiedad zone de nuestro AWS Route53 podrá ser establecida después de subir nuestro proyecto a Cactus.cloud usando un input llamado “zone_name”, esto con el fin de que sea más flexible con respecto a nuestros requerimientos en el futuro.
1.5. Definimos los outputs que queremos visualizar al subir el proyecto a Cactus.cloud
Aquí vamos a configurar ciertos parámetros que queremos ver una vez desplegado el proyecto de infraestructura con el fin de tener una mayor trazabilidad de nuestro proyecto.
Ya con esto tendríamos listo el proyecto y continuamos con el siguiente paso.
2. Subirlo a un repositorio de git.
2.1 Vamos a una terminal en la base de nuestro proyecto.
Aquí vamos a escribir los siguientes comandos para subir nuestro servicio a git.
3. Configurar nuestro proyecto dentro de Cactus.cloud y desplegarlo.
Nos dirigimos a la consola de Cactus.cloud e iniciamos sesión.
3.1. Nos dirigimos a la sección de “infrastructure” y presionamos “create”.
3.2. Configuramos la infraestructura.
Ponemos un nombre, escribimos el repositorio donde subimos el proyecto, será una infraestructura de múltiples instancias (deploy mode) y seleccionamos el tipo de proyecto, en este caso Terraform.
3.3. Veremos creado nuestro proyecto y nos dirigiremos a sus instancias.
3.4. Seleccionamos un ambiente y entraremos a los inputs de la instancia por defecto.
Cactus.cloud crea por defecto una instancia para cada ambiente y vamos a trabajar sobre esta.
3.5. Definimos los valores de las variables que agregamos a nuestro proyecto en el paso 1.1, siguiendo una estructura de JSON, después de eso presionamos guardar.
3.6. Presionaremos el botón de crear deploy.
3.7. Una vez aquí presionamos “create” y escribimos el nombre de la rama a desplegar, en este caso “master”.
El “Action” será “Apply” para que se vea reflejado de manera instantánea, esto nos dirigirá a la pantalla del detalle de este deploy.
3.8. Finalización del deploy.
Aquí solo tendremos que esperar que la infraestructura termine su despliegue y podremos ver sus logs y sus outputs.
Así podemos ver los outputs que definimos al desarrollar, solo debes darle clic al botón de “Output”:
Conclusión.
Si seguiste todos los pasos correctamente ya tendríamos un proyecto de infraestructura desarrollado y desplegado en producción 😎 en solo unos cuantos pasos usando Cactus.cloud 🌵 con sus respectivos logs y outputs.