Jenkins : Ajouter un nœud
Pourquoi ajouter un nœud ?
Selon la documentation de Jenkins :
Il est assez courant lors du démarrage avec Jenkins d'avoir un seul serveur qui exécute le maître et toutes les versions, mais l'architecture Jenkins est fondamentalement "Maître + Agent". Le maître est conçu pour assurer la coordination et fournir les points de terminaison GUI et API, et les agents sont conçus pour effectuer le travail. La raison en est que les charges de travail sont souvent mieux "sous-traitées" à des serveurs distribués. Cela peut être pour l'échelle, ou pour fournir différents outils, ou s'appuyer sur différentes plates-formes cibles. Une autre raison courante pour les agents distants est d'effectuer des déploiements dans des environnements sécurisés (sans que le maître ait un accès direct).
Sachant que j'ai déjà un nœud, nous allons voir comment en rajouter un de plus.
Créer un nouveau nœud
Si cela est votre premier vous n'aurez pas la ligne Copier un nœud existant
Donnez-lui un nom et cliquez sur create
Il vous faudra créer le répertoire de travail /jenkins ou autre, sur le nœud et donner les droits correspondant à votre utilisateur Jenkins.
=> nous sommes dans un cas d'usage simple
Pour l'exercice, je l'ai placé à la racine.
Mon utilisateur est madmaxx, donc :
chown -R madmaxx: jenkins/
Donc remplissez le répertoire de travail et la méthode de lancement ainsi que les champs suivants comme sur les captures suivantes.
Notre nœud est ajouté mais pas encore utilisable.
Pour que tout se passe bien nous allons avoir besoin d'installer openjdk, git et comme il sera dédié à ansible...
Cela nous évitera de passer par tout un tas d'erreurs.
apt install openjdk-11-jre git ansible -y
Nous allons également avoir besoin de générer une clé ssh pour notre utilisateur
Et la "propager" sur le ou les serveurs cibles
Dans mon cas j’utilise un port autre que le 22 mais cela n'a pas d'importance.
ssh-keygen -t rsa -b 4096 -C "ssh Node2"
ssh-copy-id -p31108 madmaxx@10.0.0.108
Cliquez sur le nom du nœud s'il n'est pas synchronisé et Launch agent
Vérifier dans le log que vous avez ce message puis revenez sur les pages des nœuds et voyez votre nœud synchronisé.
Allons vérifier et modifier le maître comme sur les captures suivantes
Passez votre souris au-dessus du nom du maître, une petite flèche apparaît, cliquez dessus puis configurer.
Vérifiez ce paramètre.
Faisons de même pour le nœud esclave ou les nœuds esclaves.
Vérifiez ce paramètre.
Si vous avez plusieurs nœuds, il sera utile de les gérer en fonction des jobs par exemple.
voyez par vous même.
Pour le node2 j'ai poussé la configuration comme ce qui suit, pas très efficace dans ce cas précis, trop de latence, sans doute cela sera plus éfficace avec du docker en lieu et place d'un container Proxmox.
Il ne reste plus qu'à lancer un job, pour l'exemple je vais vous montrer pour les deux nœuds.
Mon node2 est bien sur le bon job.
Et mon jenkins-node et également sur le bon job.
Mon node2 (container Proxmox) consomme peu... sachant qu'il n'y a que 512 Mo de RAM (capture faite pendant l'exécution du job).
Le Jenkins-node (VM) également (capture faite pendant l'exécution du job également).
Finalement le maître est soulagé et il remplit bien son boulot de distribuer les jobs sur les nœuds.
Chacun rempli son rôle comme prévu.
Le maître (VM 768 Mo de RAM) pendant l'exécution des deux nœuds simultanément :