Terraform , Jenkins, AWS EC2

Cristhian C. M.
4 min readJan 6, 2025

--

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
Instancia creada

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.

--

--

Cristhian C. M.
Cristhian C. M.

Written by Cristhian C. M.

💯✔️☁️x2 AWS Certified (Solutions Architect, Developer) | OCA Java 8 | Software Engineer ✔️☁️

No responses yet