Cómo configurar Jenkins maestro y esclavo en Ubuntu

Jenkins es un servidor de automatización bifurcado del proyecto Hudson, compatible con muchos sistemas de software SCM (Gestión del Control de Fuentes), como Git, SVN y Mercurial. Jenkins proporciona cientos de plugins para automatizar tu proyecto. Jenkins ofrece soporte para una arquitectura «maestro/esclavo», lo que le permite alojar un gran número de compilaciones de proyectos.

¿Cómo funciona Jenkins ‘maestro/esclavo’?

La arquitectura maestro/esclavo de Jenkins se utiliza para entornos de compilación distribuidos, en los que la carga de trabajo de compilación de proyectos se distribuye entre varios nodos agentes, y podemos utilizar entornos diferentes para cada compilación.

En la arquitectura ‘maestro/esclavo’ de Jenkins, un maestro se representa a sí mismo como una instalación básica de Jenkins, y se encarga de todas las tareas del sistema de construcción. El nodo maestro de Jenkins se utilizará para programar los trabajos, supervisar los nodos esclavos, enviar las compilaciones a los nodos esclavos, registrar y representar el resultado de la compilación, y también para ejecutar directamente los trabajos de compilación.

Los nodos esclavos de Jenkins se configuran para descargar del maestro los proyectos de construcción, y es necesario establecer una conexión entre el maestro y los esclavos. Los nodos esclavos de Jenkins pueden ejecutarse en diversos sistemas operativos, como Windows y Linux, y no es necesario instalar paquetes Jenkins completos en ellos.

En este tutorial, aprenderemos a configurar la arquitectura maestro-esclavo de Jenkins utilizando la última versión de Ubuntu, Ubuntu 18.04 LTS. Aprenderemos a configurar el servidor maestro de Jenkins, y luego a añadir otros nodos Ubuntu como esclavos de Jenkins.

Requisitos previos

  • Ubuntu 18.04
    • maestro – 10.0.15.10
    • esclavo01 – 10.0.15.21
    • esclavo02 – 10.0.15.22
  • Privilegios de root

¿Qué vamos a hacer?

  1. Instalar Jenkins Master
  2. Configura las credenciales del Maestro Jenkins
  3. Configurar los Nodos Agentes Esclavos
  4. Añadir nuevos nodos esclavos
  5. Preparar los Nodos Agentes Esclavos para Ejecutar la Construcción
  6. Probar

Paso 1 – Instalar Jenkins Maestro

En este tutorial, no cubriremos la instalación básica de Jenkins. Hay varios artículos en HowtoForge. A continuación se muestra nuestro servidor maestro Ubuntu 18.04 con Jenkins instalado en él.

Instalar Jenkins Master

Paso 2 – Configurar las credenciales maestras de Jenkins

Cuando tengas el servidor maestro Jenkins instalado, tenemos que configurar el propio servidor maestro. Por defecto, hay diferentes formas de iniciar los nodos agentes de Jenkins, podemos lanzar los nodos agentes a través de SSH, cuenta administrativa de windows, y a través de Java Web Start (JNLP), elige la mejor forma dependiendo de la configuración de tu entorno y sistema operativo.

Para esta guía, lanzaremos los nodos agentes a través de SSH, y necesitamos configurar las credenciales de Jenkins en nuestro servidor maestro.

Generar clave SSH

Utilizaremos la autenticación mediante clave ssh para configurar nuestros nodos agentes, por lo que necesitamos generar la clave ssh para el usuario Jenkins y luego subir la clave a cada nodo servidor manualmente utilizando ‘ssh-copy-id’.

En el servidor maestro Jenkins, inicia sesión con el usuario Jenkins y genera la clave ssh.

su - jenkins
ssh-keygen

Y obtendrás la clave privada ‘id_rsa’ y la pública ‘id_rsa.pub’ en el directorio ‘.ssh’.

Generar clave SSH

Configura las credenciales en Jenkins

Abre tu panel de control de Jenkins y haz clic en el menú «Credenciales» de la izquierda.

Configurar credenciales en Jenkins

Y haz clic en el enlace de dominio ‘global’.

Ahora haz clic en «Añadir credenciales».

Añadir credenciales

Ahora elige el método de autenticación.

  • Tipo Nombre de usuario SSH con clave privada
  • Alcance: Global
  • Nombre de usuario: jenkins
  • Clave privada: Introduce directamente y pega la clave privada ‘id_rsa’ del usuario Jenkins del servidor maestro.

Haz clic en ‘Aceptar’.

elige el método de autenticación

Y ya se han creado las credenciales de Jenkins con el método ssh auth key.

Se ha creado la credencial Jenkins con el método ssh auth key

Paso 3 – Configurar Nodos Esclavos

Ahora configuraremos el servidor de nodos esclavos instalando java en esos servidores, y crearemos un nuevo usuario Jenkins.

Instalar Java

Instala los paquetes ‘software-properties-common’ y añade el repositorio PPA de java.

sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:openjdk-r/ppa -y

Ahora instala java OpenJDK utilizando el siguiente comando apt.

sudo apt install openjdk-8-jdk -y

Una vez completada la instalación, comprueba la versión de java instalada.

java -version

Y tendrás Java OpenJDK 1.8 instalado en el sistema.

Instalar Java

Añade un nuevo usuario Jenkins

Ahora añade el usuario ‘Jenkins’ a todos los nodos del agente.

Ejecuta el siguiente comando.

useradd -m -s /bin/bash jenkins
passwd Jenkins

Se ha creado el usuario ‘Jenkins’ para los nodos agentes.

Añadir nuevo usuario Jenkins

Copia la clave SSH del maestro al esclavo

A continuación, tenemos que subir la clave ‘id_rsa.pub’ del nodo servidor maestro al esclavo. Tenemos que subirla a cada uno de los nodos servidores utilizando el comando ‘ssh-copy-id’ como se indica a continuación.

ssh-copy-id [email protected]
ssh-copy-id [email protected]

Escribe la contraseña del usuario Jenkins.

La clave ssh ‘id_rsa.pub’ se ha subido a todos los nodos agentes.

Copiar la clave SSH del maestro al esclavo

Paso 4 – Añadir nuevos nodos esclavos

En el panel de control de Jenkins, haz clic en el menú ‘Gestionar Jenkins’, y haz clic en ‘Gestionar Nodos’.

Añadir nuevos nodos esclavos

Haz clic en «Nuevo Nodo».

Nuevo Nodo

Escribe el nombre del nodo ‘slave01’, elige el ‘agente permanente’, y haz clic en ‘Aceptar’.

nombre del nodo

Ahora escribe los detalles de la información del nodo

  • Descripción: slave01 nodo agente servidor
  • Directorio raíz remoto: /home/jenkins
  • Etiquetas: slave01
  • Método de lanzamiento: Lanza el agente esclavo mediante SSH, escribe la dirección ip del host ‘10.0.15.21’, elige la autenticación mediante la credencial ‘Jenkins’.

información del nodo

Ahora haz clic en el botón «Guardar» y espera a que el servidor maestro se conecte a todos los nodos del agente e inicie los servicios del agente.

A continuación se muestran los resultados cuando el servidor maestro se conecta a todos los nodos agentes.

el servidor maestro está conectado a todos los nodos agentes

Se han añadido los nodos esclavos Jenkins al servidor maestro.

Paso 5 – Preparar los nodos agentes esclavos para ejecutar la compilación

En este paso, configuraremos el maestro Jenkins para ejecutar la compilación en los nodos agentes esclavos.

Haz clic en el menú «Gestionar Jenkins» y luego en «Configurar sistema».

Preparar los Nodos Agentes Esclavos para Ejecutar la Construcción

Ahora ve a la sección ‘Configuraciones Esclavas’ y define todo lo que necesites como se muestra a continuación.

la sección "Configuraciones esclavas

Más información sobre las ‘Configuraciones Esclavas’ en el enlace.

Haz clic en el botón «Guardar» y ya estamos listos para ejecutar la compilación en los nodos agentes esclavos.

Paso 6 – Pruebas

Ahora queremos crear una nueva compilación simple para Jenkins, y queremos ejecutar la compilación en los nodos agentes bot ‘slave01’ y ‘slave02’.

En el panel de control de Jenkins, haz clic en el menú «Nuevo elemento».

Probando Jenkins

Escribe el nombre del elemento, elige el proyecto de estilo libre y haz clic en «Aceptar».

Añadir proyecto Freestyle

En la sección general, escribe la descripción del trabajo y marca la opción ‘Restringir dónde se puede ejecutar este proyecto’.

En la ‘Expresión de etiqueta’, especifica el nodo como ‘slave01’.

Selecciona un nodo

Pasa a la sección de construcción y elige la opción ‘Ejecutar shell’, escribe el comando como se indica a continuación.

top -b -n 1 | head -n 10 && hostname

Haz clic en el botón «Guardar» y serás redirigido a la página del trabajo.

Página de empleo

Haz clic en «Construir ahora» para construir el proyecto y, a continuación, en la sección «Historial de construcción».

Construye ahora

Y el siguiente es mi resultado

Construye en el nodo agente ‘slave01’.

Salida de resultados del script Jenkins

Construye en el nodo agente ‘slave02’.

Construir en el nodo 02

La instalación y configuración de la arquitectura maestro/esclavo de Jenkins y de las construcciones distribuidas Jenkins se ha completado con éxito.

Referencias

También te podría gustar...