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?
- Instalar Jenkins Master
- Configura las credenciales del Maestro Jenkins
- Configurar los Nodos Agentes Esclavos
- Añadir nuevos nodos esclavos
- Preparar los Nodos Agentes Esclavos para Ejecutar la Construcción
- 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.
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’.
Configura las credenciales en Jenkins
Abre tu panel de control de Jenkins y haz clic en el menú «Credenciales» de la izquierda.
Y haz clic en el enlace de dominio ‘global’.
Ahora haz clic en «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’.
Y ya se han creado las credenciales de 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.
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.
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.
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’.
Haz clic en «Nuevo Nodo».
Escribe el nombre del nodo ‘slave01’, elige el ‘agente permanente’, y haz clic en ‘Aceptar’.
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’.
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.
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».
Ahora ve a la sección ‘Configuraciones Esclavas’ y define todo lo que necesites como se muestra a continuación.
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».
Escribe el nombre del elemento, elige el proyecto de estilo libre y haz clic en «Aceptar».
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’.
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.
Haz clic en «Construir ahora» para construir el proyecto y, a continuación, en la sección «Historial de construcción».
Y el siguiente es mi resultado
Construye en el nodo agente ‘slave01’.
Construye en el nodo agente ‘slave02’.
La instalación y configuración de la arquitectura maestro/esclavo de Jenkins y de las construcciones distribuidas Jenkins se ha completado con éxito.