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:

  1. Crear nuestro proyecto de infraestructura en local.
  2. Subirlo a un repositorio de git.
  3. 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:

// variables.tf variable "region" { type = string } variable "access_key_id" { type = string } variable "secret_access_key" { type = string } variable "session_token" { type = string default = null } variable "zone_name" { type = string }

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.

// main.tf provider "aws" { region = var.region access_key = var.access_key_id secret_key = var.secret_access_key token = var.session_token }

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”.

// main.tf provider "aws" { region = var.region access_key = var.access_key_id secret_key = var.secret_access_key token = var.session_token } terraform { backend "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.

// main.tf provider "aws" { region = var.region access_key = var.access_key_id secret_key = var.secret_access_key token = var.session_token } terraform { backend "http" {} } data "aws_route53_zone" "zone" { name = var.zone_name }

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.

// main.tf provider "aws" { region = var.region access_key = var.access_key_id secret_key = var.secret_access_key token = var.session_token } terraform { backend "http" {} } data "aws_route53_zone" "zone" { name = var.zone_name } output "zone_id" { value = data.aws_route53_zone.zone.id } output "zone_name" { value = data.aws_route53_zone.zone.name } output "zone_arn" { value = data.aws_route53_zone.zone.arn }

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.

git init
git add .
git commit -m "terraform project"
git branch -M master
git remote add origin git@github.com:example/terraform-project.git
git push -u origin master

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”.

Cactus.cloud infrastructure project creation

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.

Cactus.cloud infrastructure project creation form

3.3. Veremos creado nuestro proyecto y nos dirigiremos a sus instancias.

Cactus.cloud infrastructure project created

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.

Cactus.cloud infrastructure project instance

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.

Cactus.cloud infrastructure project instance input

3.6. Presionaremos el botón de crear deploy.

Cactus.cloud infrastructure project instance input filled

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.

Cactus.cloud infrastructure project instance deploy

Cactus.cloud infrastructure project instance 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.

Cactus.cloud infrastructure project instance deploy

Así podemos ver los outputs que definimos al desarrollar, solo debes darle clic al botón de “Output”:

Cactus.cloud infrastructure project instance deploy

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.

Usamos cookies para mejorar su experiencia en nuestro sitio y personalizar el contenido a sus necesidades. Al hacer clic en "Aceptar", usted acepta. Lea nuestra Política de Cookies y nuestra Política de Privacidad y Datos para más información.