Mi Blog
👉 Cómo añadir un nodo esclavo GNU/Linux a Jenkins

Cómo añadir un nodo esclavo GNU/Linux a Jenkins

 
(10 votos)

Jenkins nos permite conectar nodos esclavos GNU/Linux (slave nodes) independientemente de la distribución utilizada (Debian, Ubuntu, RedHat, SuSE, Slackware...). Los nodos esclavos son los encargados de ejecutar los Jobs en Jenkins para distribuir la carga entre los equipos y el servidor Jenkins es quién realiza la orquestación de las tareas.

Seguid leyendo y os enseñaré cómo podéis añadir nuevos nodos GNU/Linux a vuestro servidor de integración continua Jenkins...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

¿QUÉ ES JENKINS?

Jenkins es un servidor que sirve para automatizar tareas, escrito en Javaopen source. Está basado en el proyecto Hudson y es, dependiendo de la visión, un fork del proyecto o simplemente un cambio de nombre.

Jenkins ayuda en la automatización de parte del proceso de desarrollo de software mediante integración continua y facilita ciertos aspectos de la entrega continua. Admite herramientas de control de versiones como CVSSubversionGitMercurialPerforce y Clearcase y puede ejecutar proyectos basados en Apache Ant y Apache Maven, así como secuencias de comandos de consola y programas por lotes de Windows. Publicado bajo licencia MIT, Jenkins es software libre.

 

Principales características:

  • Puede orquestar cualquier tipo de proceso.
  • Utilizada para ejecutar tareas manuales, periódicas o automáticas.
  • Cuenta con más de 1400 plugins
  • Puede aumentar su capacidad de cómputo añadiendo nuevos agentes o servidores
  • Fácil de usar
  • Dashboard para visualizar estado de tareas.

 

También es posible utilizar Jenkins para:

  • Permite ejecución de procesos secuenciales
  • Monitoreo de procesos
  • Permite ejecución a horas determinadas
  • Ejecución en base a eventos
  • Ejecución distribuida en varias máquinas
  • Alertas ante problemas en algún proceso

 

Web: https://jenkins.io/

 

 

Jenkins permite tener nodos esclavos funcionando con cualquier distribución de GNU/Linux

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un PC con Jenkins ( v2.235.1 en este ejemplo )
  • Otro PC con cualquier distribución de GNU/Linux

 

 

2.- AÑADIR PLUGINS NECESARIOS

Existen varias formas de conectar los nodos GNU/Linux a nuestro máster Jenkins y explicaré una de ellas. Para añadir un nuevo nodo GNU/Linux como esclavo, primero es necesario instalar un plugin a Jenkins que se encargará de conectar por SSH con los nodos esclavos y así poder conectar con ellos y enviar los JOBs para realizar la tarea que queramos realizar en dicho nodo.

Haremos click en "Administrar Jenkins"->"Administrar Plugins":

Slave Jenkins GNU/LinuxAdministrar plugins

 

 

Una vez dentro del menú de plugins, haremos click en "Todos los plugins" y escribiremos "SSH" en el campo de búsqueda superior y marcaremos para instalar el plugin "SSH Build Agents" y marcaremos "Instalar sin reiniciar":

Slave Jenkins GNU/LinuxInstalar plugin

 

 

En la siguiente pantalla veremos el progreso de la instalación así como los posibles errores durante el proceso:

Slave Jenkins GNU/LinuxProgreso de instalación

 

 

3.- CONFIGURAR EL NODO CLIENTE

En el equipo GNU/Linux cliente, deberemos tener instalado. Si utilizamos un equipo con GNU/Linux Debian, podremos instalar Java instalando el paquete JRE o JDK. En el siguiente ejemplo instalaremos el JRE:

raul@debian:~$ sudo apt-get install default-jre

 

 

También es necesario crear un usuario genérico para que el servidor de Jenkins se conecte el nodo cliente a través de SSH. Crearemos el usuario con el comando useradd o adduser (depende de la distribución). Crearemos un usuario llamado jenkins:

raul@debian:~$ sudo adduser jenkins
Añadiendo el usuario `jenkins' ...
Añadiendo el nuevo grupo `jenkins' (1004) ...
Añadiendo el nuevo usuario `jenkins' (1002) con grupo `jenkins' ...
Creando el directorio personal `/home/jenkins' ...
Copiando los ficheros desde `/etc/skel' ...
Nueva contraseña:
Vuelva a escribir la nueva contraseña:
passwd: contraseña actualizada correctamente
Cambiando la información de usuario para jenkins
Introduzca el nuevo valor, o pulse INTRO para usar el valor predeterminado
Nombre completo []:
Número de habitación []:
Teléfono del trabajo []:
Teléfono de casa []:
Otro []:
¿Es correcta la información? [S/n] S

 

 

Crearemos un directorio que utilizará Jenkins  y posteriormente le cambiaremos el propietario:

raul@debian:~$ sudo mkdir /var/jenkins/
raul@debian:~$ sudo chown jenkins /var/jenkins/

 

 

4.- AÑADIR NODO EN JENKINS

Para añadir un nuevo nodo, deberemos entrar como Administradores en Jenkins, y en el menú izquierdo hacer click en "Administrar Jenkins"->"Administrar Nodos":

Slave Jenkins GNU/LinuxAdministrar Nodos

 

 

En la pantalla principal de nodos, haremos click en el menú izquierdo sobre "Nuevo nodo":

Slave Jenkins GNU/LinuxNuevo nodo

 

 

Ahora, introduciremos el nombre del nodo. Personalmente, nunca me gustan los espacios porque pueden dar problemas, por tanto, recomiendo poner los nombres con guiones (bajos o medios). Marcaremos la opción de "Permanent Node" y a continuación haremos click en "OK":

Slave Jenkins GNU/LinuxNombre del nodo

 

 

A continuación, introduciremos los datos del nuevo nodo. En este ejemplo, los datos serán los siguientes:

  • Nombre: Debian_Nodo_1
  • Descripción: Nodo Debian 1
  • Número de ejecutores: 2
  • Directorio raíz remoto: /var/jenkins
  • Etiquetas: linux-debian
  • Usar: Dejar este nodo para ejecutar solamente tareas vinculadas a él
  • Método de ejecución: Arrancar agentes remotos en máquinas Unix vía SSH
    • Nombre de máquina: 192.168.1.47
    • Credenciales: jenkins
  • Host Key Verifications: Manually trusted key Verification
  • Disponibilidad: Keep this agent online as much as possible (Mantener online siempre que sea posible)

 

Slave Jenkins GNU/LinuxConfiguración del nodo

 

 

En el paso anterior, es necesario añadir el mismo usuario/contraseña creado en el paso 2 con el que Jenkins conectará por SSH con el nodo esclavo. Haremos click en "Add" y añadiremos el mismo usuario creado en el equipo GNU/Linux para tal propósito:

Slave Jenkins GNU/LinuxUsuario acceso SSH

 

 

Una vez añadido el nodo, lo veremos en el listado de Nodos pero desconectado del servidor Jenkins:

Slave Jenkins GNU/LinuxNodo desconectado

 

 

Para conectar el nodo, haremos click sobre el nodo "Debian_Nodo_1" y luego en "Relanzar Agente":

Slave Jenkins GNU/LinuxAdministrar Jenkins

 

 

En la configuración del nodo, pusimos que era necesario validarlo de forma manual. En el log de conexión, se puede ver que efectivamente nos avisa que es necesario validar la KEY del host remoto de forma manual:

Slave Jenkins GNU/LinuxLog de conexión

 

 

Si volvemos a pinchar sobre el nodo, veremos una nueva opción "Trust SSH Host Key" en el menú izquierdo. Haremos click en dicha opción:

Slave Jenkins GNU/LinuxConfiar en el host remoto

 

 

Haremos click en "YES" para aceptar el fingerprint del equipo remoto:

Slave Jenkins GNU/LinuxAceptar fingerprint

 

 

Una vez hemos aceptado el fingerprint, el nodo quedará conectado al servidor Jenkins y ya podremos utilizarlo como un nodo esclavo:

Slave Jenkins GNU/LinuxNodo conectado

 

 

ENJOY!