Jenkins est un serveur d'automatisation dérivé du projet Hudson, il prend en charge de nombreux systèmes logiciels SCM (Source Control Management), notamment Git, SVN et Mercurial. Jenkins fournit des centaines de plugins pour automatiser votre projet. Jenkins prend en charge une architecture "maître/esclave", ce qui lui permet d'héberger un grand nombre de builds de projets.
Comment fonctionne Jenkins 'maître/esclave' ?
L'architecture maître/esclave Jenkins est utilisée pour les environnements de construction distribués, où la charge de travail des projets de construction est distribuée à plusieurs nœuds d'agent, et nous pouvons utiliser différents environnements pour chaque construction.
Dans l'architecture "maître/esclave" de Jenkins, un maître se représente comme une installation de base de Jenkins et gère toutes les tâches du système de construction. Le nœud maître Jenkins sera utilisé pour la planification des tâches, la surveillance des nœuds esclaves, la distribution des builds aux nœuds esclaves, l'enregistrement et la représentation du résultat de la construction, ainsi que l'exécution directe des tâches de build.
Les nœuds esclaves Jenkins sont configurés pour décharger les projets de construction du maître, et il est nécessaire d'établir une connexion entre le maître et les esclaves. Les nœuds esclaves Jenkins peuvent fonctionner sur divers systèmes d'exploitation tels que Windows et Linux, et il n'est pas nécessaire d'y installer des packages Jenkins complets.
Dans ce didacticiel, nous allons apprendre à configurer l'architecture maître-esclave Jenkins à l'aide de la dernière version d'Ubuntu Ubuntu 18.04 LTS. Nous apprendrons à configurer le serveur maître Jenkins, puis à ajouter d'autres nœuds Ubuntu en tant qu'esclaves Jenkins.
Prérequis
- Ubuntu 18.04
- maître - 10.0.15.10
- esclave01 - 10.0.15.21
- slave02 - 10.0.15.22
- Privilèges root
Qu'allons-nous faire ?
- Installer Jenkins Master
- Configurer les informations d'identification principales Jenkins
- Configurer les nœuds de l'agent esclave
- Ajouter de nouveaux nœuds esclaves
- Préparer les nœuds de l'agent esclave pour exécuter la compilation
- Test
Étape 1 - Installer Jenkins Master
Dans ce tutoriel, nous ne couvrirons pas l'installation de base de Jenkins. Il existe un certain nombre d'articles sur HowtoForge qui traitent de l'installation de Jenkins.
- Installer Jenkins sur Ubuntu 16.04
- Installer Jenkins sur Ubuntu 18.04
- Installer Jenkins sur CentOS 7
Voici notre serveur maître Ubuntu 18.04 avec Jenkins installé dessus.
Étape 2 - Configurer les informations d'identification principales de Jenkins
Lorsque vous avez installé le serveur maître Jenkins, nous devons configurer le serveur maître lui-même. Par défaut, il existe différentes façons de démarrer les nœuds d'agent Jenkins, nous pouvons lancer les nœuds d'agent via SSH, un compte administratif Windows et via Java Web Start (JNLP), choisissez la meilleure méthode en fonction de la configuration de votre environnement et de votre système d'exploitation.
Pour ce guide, nous allons lancer les nœuds d'agent via ssh, et nous devons configurer les informations d'identification Jenkins sur notre serveur maître.
Générer une clé SSH
Nous utiliserons l'authentification par clé ssh pour configurer nos nœuds d'agent. Nous devons donc générer la clé ssh pour l'utilisateur Jenkins, puis télécharger manuellement la clé sur chaque nœud de serveur à l'aide de 'ssh-copy-id'.
Sur le serveur maître Jenkins, connectez-vous à l'utilisateur Jenkins et générez la clé ssh.
su - jenkins
ssh-keygen
Et vous obtiendrez la clé privée 'id_rsa' et la clé publique 'id_rsa.pub' dans le répertoire '.ssh'.
Configurer les identifiants sur Jenkins
Ouvrez votre tableau de bord Jenkins et cliquez sur le menu "Identifiants" à gauche.
Et cliquez sur le lien du domaine "global".
Cliquez maintenant sur "Ajouter des informations d'identification".
Choisissez maintenant la méthode d'authentification.
- Type :nom d'utilisateur SSH avec clé privée
- Portée :internationale
- Nom d'utilisateur :jenkins
- Clé privée :entrez directement et collez la clé privée 'id_rsa' de l'utilisateur Jenkins à partir du serveur maître.
Cliquez sur 'OK'.
Et les informations d'identification Jenkins avec la méthode de clé d'authentification ssh ont été créées.
Étape 3 - Configurer les nœuds esclaves
Nous allons maintenant configurer le serveur de nœuds esclaves en installant Java sur ces serveurs et créer un nouvel utilisateur Jenkins.
Installer Java
Installez les packages 'software-properties-common' et ajoutez le référentiel java PPA.
sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:openjdk-r/ppa -y
Installez maintenant Java OpenJDK en utilisant la commande apt ci-dessous.
sudo apt install openjdk-8-jdk -y
Une fois l'installation terminée, vérifiez la version Java installée.
java -version
Et vous obtiendrez Java OpenJDK 1.8 installé sur le système.
Ajouter un nouvel utilisateur Jenkins
Ajoutez maintenant l'utilisateur "Jenkins" à tous les nœuds d'agent.
Exécutez la commande ci-dessous.
useradd -m -s /bin/bash jenkins
passwd Jenkins
L'utilisateur 'Jenkins' pour les nœuds d'agent a été créé.
Copier la clé SSH du maître vers l'esclave
Ensuite, nous devons télécharger la clé 'id_rsa.pub' du maître aux nœuds de serveur esclave. Nous devons télécharger sur chaque nœud de serveur en utilisant la commande 'ssh-copy-id' comme ci-dessous.
ssh-copy-id [email protected]
ssh-copy-id [email protected]
Tapez le mot de passe de l'utilisateur Jenkins.
La clé ssh 'id_rsa.pub' a été téléchargée sur tous les nœuds d'agent.
Étape 4 - Ajouter de nouveaux nœuds esclaves
Sur le tableau de bord Jenkins, cliquez sur le menu "Gérer Jenkins", puis cliquez sur "Gérer les nœuds".
Cliquez sur "Nouveau nœud".
Tapez le nom du nœud 'slave01', choisissez 'l'agent permanent' et cliquez sur 'OK'.
Tapez maintenant les détails des informations sur le nœud.
- Description :serveur d'agent de nœud slave01
- Répertoire racine distant :/home/jenkins
- Libellés :slave01
- Méthode de lancement :lancez l'agent esclave via SSH, saisissez l'adresse IP de l'hôte "10.0.15.21", choisissez l'authentification à l'aide des informations d'identification "Jenkins".
Cliquez maintenant sur le bouton "Enregistrer" et attendez que le serveur maître se connecte à tous les nœuds d'agent et lance les services de l'agent.
Vous trouverez ci-dessous les résultats lorsque le serveur maître est connecté à tous les nœuds d'agent.
Des nœuds esclaves Jenkins ont été ajoutés au serveur maître.
Étape 5 - Préparer les nœuds de l'agent esclave pour exécuter la construction
Dans cette étape, nous allons configurer le maître Jenkins pour exécuter la construction sur les nœuds de l'agent esclave.
Cliquez sur le menu "Gérer Jenkins", puis cliquez sur "Configurer le système".
Allez maintenant dans la section "Configurations esclaves" et définissez tout ce dont vous avez besoin comme indiqué ci-dessous.
Plus d'informations sur les "configurations esclaves" sur le lien.
Cliquez sur le bouton "Enregistrer" et nous sommes maintenant prêts à exécuter la construction sur les nœuds de l'agent esclave.
Étape 6 - Tester
Maintenant, nous voulons créer une nouvelle version simple pour Jenkins, et nous voulons exécuter la version sur les nœuds d'agent bot 'slave01' et 'slave02'.
Sur le tableau de bord Jenkins, cliquez sur le menu "Nouvel élément".
Tapez le nom de l'élément, choisissez le projet de style libre et cliquez sur "OK".
Dans la section générale, tapez la description du poste et cochez l'option "Restreindre où ce projet peut être exécuté".
Sur 'Label Expression', spécifiez le nœud tel que 'slave01'.
Passez à la section de construction et choisissez l'option "Exécuter le shell", tapez la commande comme ci-dessous.
top -b -n 1 | head -n 10 && hostname
Cliquez sur le bouton "Enregistrer" et vous serez redirigé vers la page de l'emploi.
Cliquez sur "Construire maintenant" pour créer le projet, puis cliquez sur l'élément de la section "Historique de génération".
Et voici mon résultat.
Construit sur le nœud d'agent 'slave01'.
Construit sur le nœud d'agent 'slave02'.
L'installation et la configuration de l'architecture maître/esclave de Jenkins et des versions distribuées de Jenkins ont été effectuées avec succès.
Références
- https://wiki.jenkins.io/