Desbloqueo de CI/CD: Cómo instalar Jenkins en Ubuntu con éxito

¿Estás pasando mucho tiempo desplegando código en tu infraestructura con muchos pasos y software? No te preocupes, estás en el lugar correcto para aprender cómo instalar Jenkins, la herramienta de código abierto más utilizada.

En este tutorial, aprenderás cómo instalar Jenkins en una máquina Ubuntu, para que puedas construir y desplegar código con solo un clic.

Sigue leyendo y ¡comienza la instalación!

Prerrequisitos

Esta publicación será un tutorial paso a paso. Para seguirlo, asegúrate de tener una máquina Ubuntu. Este tutorial utiliza Ubuntu 18.04 con apache instalado.

Instalación de Java Versión 11 en una Máquina Ubuntu

Jenkins es una herramienta de Integración Continua (CI) y Despliegue Continuo (CD), que puedes ejecutar en diferentes contenedores servlet, como Apache Tomcat o GlassFish. Pero para esta demostración, ejecutarás Jenkins en su servidor de contenedor servlet Java incorporado.

Existen múltiples implementaciones de Java que puedes utilizar con Jenkins, pero OpenJDK es la más popular, la cual instalarás y utilizarás en este tutorial.

1. Inicia sesión en tu máquina Ubuntu utilizando tu cliente SSH favorito.

2. A continuación, ejecuta los siguientes comandos para crear un directorio llamado ~/install_jenkins_demo y cambia a ese directorio.

mkdir ~/install_jenkins_demo
cd ~/install_jenkins_demo

3. Ejecuta el comando apt install a continuación para instalar Java en tu máquina.

# Instalando Java Versión: Java SE 11 (LTS)
sudo apt install default-jdk 
Installing Java Version: Java SE 11 (LTS)

4. Por último, ejecuta el siguiente comando para verificar la versión de Java instalada en tu máquina. Al hacerlo, te aseguras de haber instalado Java correctamente.

# Verificando la Versión de Java para confirmar la instalación de Java.
java -version
Checking the Version of Java to verify Java installation

Instalar Jenkins en una instancia de Ubuntu 18.04 LTS

Ahora que tienes Java instalado en la máquina Ubuntu, es hora de instalar Jenkins en tu máquina. La instalación de Jenkins es bastante similar a cómo instalas otros paquetes en tu máquina.

Suponiendo que aún estás conectado al cliente SSH:

1. Primero, ejecuta el comando apt update para actualizar los paquetes del sistema.

sudo apt update

2. A continuación, ejecuta el siguiente comando wget para agregar la clave pública de Jenkins a tu sistema.

Agregar la clave pública permite que el sitio de Jenkins descargue el repositorio oficial de Jenkins o cualquier paquete requerido.

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

3. Ejecuta los siguientes comandos para agregar el repositorio oficial de Jenkins a tu sistema y actualizarlo.

# Agregando el repositorio oficial de Jenkins al sistema
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \
    /etc/apt/sources.list.d/jenkins.list'
# Actualizando el paquete
sudo apt-get update

4. Ahora, ejecuta el siguiente comando para instalar el paquete Jenkins.

# Instalando el Paquete Jenkins
sudo apt-get install Jenkins
Installing the Jenkins package on an ubuntu machine

5. Por último, ejecuta el comando service a continuación para verificar el estado del servicio Jenkins. # Validar el servicio Jenkins en la máquina ubuntu service jenkins status

# Validar el servicio Jenkins en la máquina ubuntu
service jenkins status

Como puedes ver a continuación, el estado muestra que el servicio Jenkins está activo.

Verifying the status of Jenkins service

Configurando una Instancia de Jenkins

En este punto, has avanzado a la mitad en la instalación exitosa de Jenkins. Pero, antes de empezar a usarlo realmente, necesitas configurarlo con comodidades básicas. ¿Cómo? El primer paso para configurar Jenkins es desbloquear el Jenkins recién instalado.

Suponiendo que todavía estás conectado al cliente SSH:

1. Abre tu navegador favorito y navega hacia la dirección IP del servidor seguida por el puerto 8080 como jenkins-ip:8080. Después de navegar al enlace, necesitarás desbloquear Jenkins proporcionando la contraseña administrativa. La contraseña administrativa se encuentra almacenada en el directorio /var/lib/jenkins/secrets/initialAdminPassword en el servidor (paso dos).

Unlocking Jenkins Instance

2. Ejecuta el comando cat a continuación para agregar la contraseña del administrador en tu máquina desde el directorio /var/lib/jenkins/secrets/initialAdminPassword.

cat /var/lib/jenkins/secrets/initialAdminPassword

Como puedes ver a continuación, la cadena enorme en la salida es la contraseña de administrador. Toma nota de la contraseña de administrador ya que la necesitarás para desbloquear Jenkins (paso tres).

Checking the Initial Admin Password

3. Vuelve a tu navegador web (Desbloquear Jenkins página) e introduce la contraseña de administrador que anotaste en el paso dos.

Una vez que hayas desbloqueado Jenkins, tu navegador se redireccionará a una página donde personalizarás tu instancia de Jenkins con complementos (paso cuatro).

4. En la página Personalizar Jenkins, haz clic en la opción Instalar complementos sugeridos.

El complemento Jenkins es una herramienta de terceros que se integra con Jenkins y te permite realizar tareas como el complemento Git. El complemento Git te permite conectar con repositorios Git, ejecutar comandos Git, y más.

Installing the Jenkins Plugin

5. Completa los detalles del usuario administrador, como se muestra a continuación, y haz clic en Guardar y Continuar para crear un usuario administrador. Este usuario administrador te permite trabajar con el panel de control de la interfaz de usuario de Jenkins o con la instancia de Jenkins.

Tan pronto como hagas clic en Guardar y Continuar, obtendrás una pantalla de Configuración de la Instancia como se muestra en el paso cinco.

Por defecto, Jenkins tiene un usuario administrador creado con nombre de usuario/contraseña (admin: admin) pero aún te proporciona la opción de crear un usuario administrador de tu elección. Puedes omitirlo y continuar como administrador si no deseas crear un usuario administrador personalizado.

Creating the First Admin user

6. Por último, haz clic en Guardar y Finalizar para guardar la configuración de la instancia.

La configuración de la instancia te permite especificar la URL de Jenkins que deseas utilizar, y en este caso, utilizarás la URL predeterminada (es decir, server-ip:8080)

Configuring the Jenkins Instance
Jenkins Running successfully on Port 8080

Cambiando el Puerto Predeterminado de una Instancia de Jenkins

Anteriormente, aprendiste que por defecto, Jenkins se ejecuta en el puerto 8080, lo cual está bien. Pero, ¿qué pasa si necesitas ejecutar otras aplicaciones en el mismo puerto, como Apache o NGINX? ¡No te preocupes! Puedes cambiar el puerto predeterminado de Jenkins (8080) y ejecutar la instancia de Jenkins en otros puertos.

1. Abre el archivo /etc/default/Jenkins en tu editor de texto preferido y cambia el puerto predeterminado de 8080 a 9090, luego guarda los cambios.

Changing the Default Jenkins Port

2. A continuación, ejecuta el siguiente comando para reiniciar Jenkins, de modo que las configuraciones actualizadas surtan efecto.

sudo systemctl restart jenkins

3. Por último, accede a la URL de Jenkins, pero esta vez, cambia el puerto a 9090, como se muestra a continuación.

Jenkins Running successfully on Port 9090

Ejecutando Jenkins de forma segura (HTTPS) mediante un certificado SSL

En este punto, tu instancia de Jenkins se está ejecutando perfectamente en el puerto 9090. ¿Pero es seguro? No, no lo es. Asegura tu instancia de Jenkins y evita que sea comprometida por atacantes habilitando un certificado SSL.

Los certificados SSL se utilizan principalmente para realizar pruebas en la máquina local cuando no hay un certificado disponible de una autoridad de certificación externa.

Para asegurar tu instancia de Jenkins:

1. Ejecuta cada uno de los siguientes comandos para crear un directorio llamado ~/certificates para almacenar certificados y cambia a ese directorio.

mkdir ~/certificates
cd ~/certificates

2. A continuación, ejecute el siguiente comando openssl para generar una Solicitud de Firma de Certificado (CSR) y una clave privada.

openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes
Generating a CSR and private key

3. Ejecute los siguientes comandos para crear otro directorio (/etc/apache2/ssl) y mover los certificados del directorio ~/certificates/ al directorio /etc/apache2/ssl.

mkdir /etc/apache2/ssl
mv ~/certificates/* /etc/apache2/ssl/.

4. Abra el archivo de configuración del sitio SSL predeterminado de Apache (/etc/apache2/sites-available/default-ssl.conf) y agregue las siguientes líneas. Asegúrese de reemplazar <my-server-name> con el nombre real de su servidor.

En el siguiente código, especifique la ubicación (clave y archivo de certificado) donde copió previamente los certificados SSL. Además, para que Jenkins redirija al puerto 9090, agregará el argumento ProxyPass y activará el ProxyPreserveHost.

ServerName <my-server-name>
SSLCertificateFile    /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:9090/
ProxyPassReverse / http://127.0.0.1:9090/
Updating default SSL Apache site configuration file

5. Ahora ejecute cada comando a continuación para habilitar el módulo SSL, habilitar el sitio que modificó (paso cuatro) y reiniciar el servicio Apache.

# Habilitar el módulo SSL, para que pueda trabajar con conexiones SSL.
sudo a2enmod ssl proxy proxy_http proxy_balancer
# Habilitar el sitio que modificó (paso cuatro)
sudo a2ensite default-ssl.conf
# Reiniciar el servicio Apache
sudo service apache2 restart

6. Por último, navegue hasta su instancia de Jenkins, pero esta vez, utilizando HTTPS, como se muestra a continuación.

Como puede ver, Jenkins se está abriendo correctamente con conexiones SSL en el puerto HTTPS. No se preocupe si ve un símbolo de advertencia que muestra el mensaje No seguro. Obtendrá esa advertencia ya que está utilizando un certificado autofirmado (creado por usted) y no por la autoridad de certificación.

Accessing Jenkins Instance with SSL connections on HTTPS port

Conclusión

En este tutorial, aprendió cómo instalar Jenkins en una máquina Ubuntu y verificar que puede acceder a una instancia de Jenkins de forma segura.

Ahora, ¿cómo planea mejorar su juego con Jenkins? ¿Quizás automatizar despliegues web? ¿O crear un pipeline de CI/CD de Jenkins para mejorar su proceso de desarrollo de software?

Source:
https://adamtheautomator.com/install-jenkins/