Jenkins Master en Slave instellen op Ubuntu 18.04 LTS

Jenkins is een automatiseringsserver die gevorked is van het Hudson project, het heeft ondersteuning voor vele SCM (Source Control Management) software systemen, waaronder Git, SVN, en Mercurial. Jenkins biedt honderden plugins om je project te automatiseren. Jenkins biedt ondersteuning voor een’master/slave’ architectuur, waardoor het een groot aantal project builds kan hosten.

Hoe werkt Jenkins ‘master/slave’?

Jenkins master/slave architectuur wordt gebruikt voor gedistribueerde bouwomgevingen, waarbij de werklast van het bouwen van projecten verdeeld wordt over meerdere agent nodes, en we voor elke build verschillende omgevingen kunnen gebruiken.

In de Jenkins ‘master/slave’ architectuur stelt een master zich voor als een basis Jenkins installatie, en handelt alle taken voor het bouwsysteem af. De Jenkins master node wordt gebruikt voor het plannen van jobs, het bewaken van slave nodes, het verzenden van builds naar slave nodes, het registreren en weergeven van het build resultaat, en ook het direct uitvoeren van build jobs.

De Jenkins slaafknooppunten worden ingesteld om bouwprojecten van de master af te halen, en er is een verbinding tussen de master en de slaven nodig. Jenkins slave nodes kunnen op allerlei besturingssystemen draaien, zoals Windows en Linux, en het is niet nodig er volledige Jenkins pakketten op te installeren.

In deze zelfstudie leren we hoe je Jenkins master-slave architectuur kunt opzetten met de nieuwste Ubuntu versie Ubuntu 18.04 LTS. We zullen leren om de Jenkins master server op te zetten, en dan andere Ubuntu knooppunten als Jenkins slaven toe te voegen.

Vereisten

  • Ubuntu 18.04
    • master – 10.0.15.10
    • slave01 – 10.0.15.21
    • slave02 – 10.0.15.22
  • Root voorrechten

Wat zullen we doen?

  1. Installeer Jenkins Master
  2. Configureer Jenkins Master Credentials
  3. Configureer Slave Agent Knooppunten
  4. Nieuwe Slave Nodes toevoegen
  5. Bereid Slave Agent Nodes voor om Build uit te voeren
  6. Testen

Stap 1 – Installeer Jenkins Master

In deze zelfstudie behandelen we niet de basis Jenkins installatie. Er zijn een aantal artikelen op HowtoForge die de Jenkins installatie behandelen.

Hieronder staat onze Ubuntu 18.04 master server met Jenkins erop geïnstalleerd.

Installeer Jenkins Master

Stap 2 – Configureer Jenkins Master Credentials

Als je de master server Jenkins geïnstalleerd hebt gekregen, moeten we de master server zelf configureren. Er zijn standaard verschillende manieren om Jenkins agent nodes te starten, we kunnen de agent nodes starten via SSH, windows administratieve account, en via Java Web Start (JNLP), kies de beste manier, afhankelijk van je omgevingsopstelling en besturingssysteem.

Voor deze gids zullen we de agent nodes lanceren via ssh, en we moeten Jenkins credentials instellen op onze master server.

Genereer SSH sleutel

We zullen de ssh sleutel authenticatie gebruiken om onze agent knooppunten in te stellen, dus moeten we de ssh sleutel voor de Jenkins gebruiker genereren en dan de sleutel handmatig naar elk server knooppunt uploaden met ‘ssh-copy-id’.

Log op de Jenkins master server in met de Jenkins gebruiker en genereer de ssh sleutel.

su - jenkins
ssh-keygen

En je krijgt de ‘id_rsa’ private en ‘id_rsa.pub’ public sleutel in de map ‘.ssh’.

Genereer SSH Sleutel

Credentials instellen op Jenkins

Open je Jenkins dashboard en klik op het ‘Credentials’ menu aan de linkerkant.

Credentials instellen op Jenkins

En klik op de link ‘global’ domain.

Klik nu op ‘Credentials toevoegen’.

Credentials toevoegen

Kies nu de authenticatie methode.

  • Soort: SSH gebruikersnaam met privésleutel
  • Reikwijdte: Globaal
  • Gebruikersnaam: jenkins
  • Particuliere sleutel: Voer direct in en plak de ‘id_rsa’ privésleutel van de Jenkins gebruiker van de hoofdserver.

Klik op ‘OK’.

kies de authenticatiemethode

En de Jenkins credential met ssh auth key methode is aangemaakt.

Jenkins credential met ssh auth sleutel methode is aangemaakt

Stap 3 – Slaafknooppunten instellen

Nu zullen we slave nodes server opzetten door java op die server te installeren, en een nieuwe Jenkins gebruiker aan te maken.

Installeer Java

Installeer de ‘software-properties-common’ pakketten en voeg de java PPA repository toe.

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

Installeer nu java OpenJDK met het onderstaande apt commando.

sudo apt install openjdk-8-jdk -y

Als de installatie voltooid is, controleer je de geïnstalleerde java versie.

java -version

En je krijgt Java OpenJDK 1.8 op het systeem geïnstalleerd.

Installeer Java

Nieuwe Jenkins gebruiker toevoegen

Voeg nu de ‘Jenkins’ gebruiker toe aan alle agent nodes.

Voer het onderstaande commando uit.

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

De ‘Jenkins’ gebruiker voor agent nodes is aangemaakt.

Nieuwe Jenkins gebruiker toevoegen

Kopieer de SSH Sleutel van Master naar Slave

Vervolgens moeten we de sleutel ‘id_rsa.pub’ uploaden van de master naar de slave server nodes. We moeten naar elke server nodes uploaden met ‘ssh-copy-id’ commando zoals hieronder.

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

Typ het wachtwoord van de Jenkins gebruiker.

De ssh sleutel ‘id_rsa.pub’ is naar alle agent nodes geüpload.

Kopieer de SSH Sleutel van Master naar Slave

Stap 4 – Nieuwe slaafknooppunten toevoegen

Klik op het Jenkins dashboard op het menu ‘Manage Jenkins’, en klik op ‘Manage Nodes’.

Nieuwe Slaafknooppunten toevoegen

Klik op de knop ‘New Node’.

Nieuw knooppunt

Typ de knooppuntnaam ‘slave01’, kies de ‘permanente agent’, en klik op ‘OK’.

node name

Typ nu de gegevens van de node.

  • Beschrijving: slave01 node agent server
  • Remote root directory: /home/jenkins
  • Labels: slave01
  • Lanceermethode: Start de slave agent via SSH, typ het host ip adres ‘10.0.15.21’, kies de authenticatie met ‘Jenkins’ credential.

knooppuntinformatie

Klik nu op ‘Save’ en wacht tot de masterserver verbinding maakt met alle agent nodes en de agent services start.

Hieronder zie je de resultaten als de master server met alle agent nodes verbonden is.

de hoofdserver is verbonden met alle agentknooppunten

Jenkins slave nodes zijn aan de master server toegevoegd.

Stap 5 – Slave agent knooppunten klaarmaken om te bouwen

In deze stap configureren we de Jenkins master om build uit te voeren op de slave agent nodes.

Klik op het menu ‘Manage Jenkins’ en dan op ‘Configure System’.

Bereid Slave Agent Knooppunten voor om Build uit te voeren

Ga nu naar de sectie ‘Slave Setups’ en definieer alles wat je nodig hebt zoals hieronder.

de sectie 'Slave Setups'

Meer info over de ‘Slave Setups’ op link.

Klik op ‘Save’ knop en nu zijn we klaar om build uit te voeren op slave agent nodes.

Stap 6 – Testen

Nu willen we een nieuwe eenvoudige build voor Jenkins maken, en we willen de build uitvoeren op de bot ‘slave01’ en ‘slave02’ agent nodes.

Klik op het Jenkins dashboard op het menu ‘New Item’.

Jenkins testen

Typ de naam van het item, kies het freestyle project, en klik op ‘OK’.

Freestyle project toevoegen

Typ in het algemene gedeelte de taakbeschrijving en vink de optie ‘Restrict where this project can be run’ aan.

Geef bij de ‘Label Expression’ het knooppunt op, zoals ‘slave01’.

Kies een knooppunt

Ga naar de build sectie en kies de optie ‘Execute shell’, typ het commando als hieronder.

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

Klik op de knop ‘Save’, en je wordt doorgestuurd naar de job pagina.

Vacature pagina

Klik op ‘Build Now’ om het project te bouwen, en klik dan op het item in de sectie ‘Build History’.

Bouw nu

En het volgende is mijn resultaat.

Bouw op de ‘slave01’ agent node.

Jenkins script resultaat uitvoer

Bouw op de ‘slave02’ agent node.

Bouw op knooppunt 02

Installatie en configuratie van Jenkins master/slave architectuur en de gedistribueerde builds Jenkins zijn met succes voltooid.

Referenties