Terraform , Jenkins, AWS EC2
En esta sección vamos a detallar la integración entre Terraform, Jenkins y AWS , se va a mostrar todas las configuraciones necesarios para poder realizar una automatización con las 3 herramientas comentadas anteriormente.
Crear una instancia e instalar Jenkins.
Dirigirnos a la consola de AWS para poder crear nuestra instancia ypoder instalar Jenkins.
Lanzar 01 Instancia Ubuntu, 22.04 LTS, la instancia se deberá configurar según la siguiente información:
- Nombre de la instancia: jenkins-server
- Instance Type: t2.micro
- Generar una “Key Pair” tipo RSA en formato .pem
- Network Settings: Por defecto (VPC Default)
- Crear Security Group (Inbound Rules) con lo detallado a continuación.
- Type Port : Custom TCP
- Port Range : 8080, 22
- Source : 0.0.0.0/0
- Advanced details -> User data : poner el siguiente código , esto para que cuando se este creando la instancia se ejecute todo el código que se ha puesto en User data.
#!/bin/bash
sudo apt update -y
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc
echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
sudo apt update -y
sudo apt install openjdk-11-jre -y
/usr/bin/java --version
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update -y
sudo apt-get install jenkins -y
sudo systemctl start jenkins
sudo systemctl status jenkins
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
wget -O- https://apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
gpg --no-default-keyring \
--keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \
--fingerprint
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update
sudo apt-get install terraform
luego de tener creado nuestra instancia obtenemos la ip publica con el puerto 8080 podremos acceder a la herramienta Jenkins.
para obtener el password necesariamente tenemos que ingresar a la instancia.
Dentro de la instancia ejecutamos el siguiente código :
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
el código que nos aparece copiamos y lo pegamos para luego dar siguiente.
Seleccionamos Install suggested plugins
para luego crear nuestro usuario para acceder a la herramienta.
Dentro de la sección Credential añadir las credenciales para poder conectarnos con los servicios de AWS:
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
Adicionalmente poner las credenciales del acceso a Github.
Luego crear nuestro Job en jenkins , le ponemos un nombre :
jenkins-terraform y seleccionamos pipeline.
Configuramos de la siguiente manera y le damos aceptar.
Luego de haber creado nuestro Job procedemos a ejecutarlo de manera manual.
cuando llegue al paso de Approval nos realizaran la consulta para aprobar o abortar el proceso , si damos en Proceed el flujo continuara y terraform se encargara de crear la infraestructura.
Nos dirigimos al servicio EC2 y en el listado veremos que se ha creado una instancia nueva.
Espero que te pueda ser útil este tutorial , si es posible compártelo para que otros desarrolladores puedan realizarlo.
Si tienes algún duda ,comentario, puedes escribirme a mi LinkedIn.