Wie man Jenkins Master und Slave auf Ubuntu einrichtet 18.04 LTS
Jenkins ist ein Automatisierungsserver, der aus dem Hudson-Projekt hervorgegangen ist und Unterstützung für viele SCM (Source Control Management) Softwaresysteme wie Git, SVN und Mercurial bietet. Jenkins bietet Hunderte von Plugins zur Automatisierung Ihres Projekts. Jenkins bietet Unterstützung für eine’Master/Slave‘-Architektur, die es ihm ermöglicht, eine große Anzahl von Projekt-Builds zu hosten.
Wie funktioniert Jenkins’Master/Slave‘?
Die Jenkins Master/Slave-Architektur wird für verteilte Build-Umgebungen verwendet, in denen die Arbeitsbelastung von Bauprojekten auf mehrere Agentenknoten verteilt ist, und wir können für jeden Build unterschiedliche Umgebungen verwenden.
In der Jenkins’master/slave‘ Architektur repräsentiert sich ein Master als eine grundlegende Jenkins Installation und übernimmt alle Aufgaben für das Build-System. Der Jenkins-Masterknoten wird für die Planung von Jobs, die Überwachung von Slave-Knoten, das Versenden von Builds an Slave-Knoten, die Aufzeichnung und Darstellung des Build-Ergebnisses sowie die direkte Ausführung von Build-Aufträgen verwendet.
Die Jenkins-Slave-Knoten, die für das Entladen von Build-Projekten vom Master eingerichtet wurden, und es ist eine Verbindung zwischen dem Master und den Slaves erforderlich. Jenkins Slave-Knoten können auf einer Vielzahl von Betriebssystemen wie Windows und Linux ausgeführt werden, und es besteht keine Notwendigkeit, vollständige Jenkins-Pakete darauf zu installieren.
In diesem Tutorial erfahren wir, wie man die Jenkins Master-Slave-Architektur mit der neuesten Ubuntu-Version Ubuntu 18.04 LTS einrichtet. Wir werden lernen, den Jenkins-Master-Server einzurichten und dann andere Ubuntu-Knoten als Jenkins-Slaves hinzuzufügen.
Voraussetzungen
- Ubuntu 18.04.
- Master – 10.0.15.10.10
- slave01 – 10.0.15.21
- slave02 – 10.0.15.15.22
- Root-Rechte
Was werden wir tun?
- Jenkins Master installieren
- Jenkins Master-Anmeldeinformationen konfigurieren
- Slave-Agent-Knoten konfigurieren
- Neue Slave-Knoten hinzufügen
- Vorbereitung der Slave-Agent-Knoten zur Ausführung des Build-Vorgangs
- Prüfung
Schritt 1 – Jenkins Master installieren
In diesem Tutorial werden wir die grundlegende Jenkins-Installation nicht behandeln. Es gibt eine Reihe von Artikeln über HowtoForge, die die Jenkins-Installation behandeln.
- Jenkins auf Ubuntu 16.04 installieren
- Jenkins auf Ubuntu 18.04 installieren
- Jenkins auf CentOS 7 installieren
Im Folgenden finden Sie unseren Ubuntu 18.04 Master-Server mit Jenkins auf dem installiert ist.
Schritt 2 – Konfigurieren der Jenkins Master-Anmeldeinformationen
Wenn Sie den Master-Server Jenkins installiert haben, müssen wir den Master-Server selbst konfigurieren. Standardmäßig gibt es verschiedene Möglichkeiten, Jenkins-Agentenknoten zu starten, wir können die Agentenknoten über SSH, Windows-Administrationskonto und über Java Web Start (JNLP) starten, wählen Sie den besten Weg abhängig von Ihrem Umgebungs-Setup und Betriebssystem.
Für dieses Handbuch werden wir die Agent-Knoten über ssh starten, und wir müssen Jenkins-Anmeldeinformationen auf unserem Master-Server einrichten.
SSH-Schlüssel generieren
Wir werden die ssh-Schlüssel-Authentifizierung verwenden, um unsere Agentenknoten einzurichten, also müssen wir den ssh-Schlüssel für den Jenkins-Benutzer generieren und dann den Schlüssel manuell mit der’ssh-copy-id‘ auf jeden Serverknoten hochladen.
Melden Sie sich auf dem Jenkins-Masterserver beim Jenkins-Benutzer an und generieren Sie den ssh-Schlüssel.
su - jenkins ssh-keygen
Und Sie erhalten den öffentlichen Schlüssel ‚id_rsa‘ private und ‚id_rsa.pub‘ im Verzeichnis ‚.ssh‘.
Einrichten von Anmeldeinformationen für Jenkins
Öffnen Sie Ihr Jenkins Dashboard und klicken Sie auf das Menü „Credentials“ auf der linken Seite.
Und klicken Sie auf den Link „globale“ Domäne.
Klicken Sie nun auf’Zugangsdaten hinzufügen‘.
Wählen Sie nun die Authentifizierungsmethode aus.
- Nett: SSH-Benutzername mit privatem Schlüssel
- Umfang: Global
- Benutzername: jenkins
- Privater Schlüssel: Geben Sie direkt ein und fügen Sie den privaten Schlüssel’id_rsa‘ des Jenkins-Benutzers vom Master-Server ein.
Klicken Sie auf „OK“.
Und die Jenkins-Anmeldeinformationen mit der Methode ssh auth key wurden erstellt.
Schritt 3 – Slave-Knoten einrichten
Jetzt werden wir den Slave Nodes Server einrichten, indem wir Java auf diesem Server installieren und einen neuen Jenkins Benutzer erstellen.
Java installieren
Installieren Sie die Pakete „software-properties-common“ und fügen Sie das java PPA-Repository hinzu.
sudo apt install software-properties-common apt-transport-https -y sudo add-apt-repository ppa:openjdk-r/ppa -y
Installieren Sie nun Java OpenJDK mit dem Befehl apt unten.
sudo apt install openjdk-8-jdk -y
Nachdem die Installation abgeschlossen ist, überprüfen Sie die installierte Java-Version.
java -version
Und Sie erhalten Java OpenJDK 1.8 auf dem System installiert.
Neuen Jenkins-Benutzer hinzufügen
Fügen Sie nun den Benutzer’Jenkins‘ zu allen Agentenknoten hinzu.
Führen Sie den folgenden Befehl aus.
useradd -m -s /bin/bash Jenkins passwd Jenkins
Der Benutzer’Jenkins‘ für Agentenknoten wurde angelegt.
Kopieren des SSH-Schlüssels vom Master zum Slave
Als nächstes müssen wir den Schlüssel’id_rsa.pub‘ vom Master auf die Slave-Serverknoten hochladen. Wir müssen auf jeden Serverknoten mit dem Befehl’ssh-copy-id‘ wie unten beschrieben hochladen.
ssh-copy-id jenkins@10.0.15.21 ssh-copy-id jenkins@10.0.15.22
Geben Sie das Jenkins-Benutzerpasswort ein.
Der ssh-Schlüssel’id_rsa.pub‘ wurde auf alle Agentenknoten hochgeladen.
Schritt 4 – Neue Slave-Knoten hinzufügen
Klicken Sie im Dashboard von Jenkins auf das Menü „Jenkins verwalten“ und dann auf „Knoten verwalten“.
Klicken Sie auf den’Neuen Knoten‘.
Geben Sie den Knotennamen’slave01′ ein, wählen Sie den’permanenten Agenten‘ und klicken Sie auf’OK‘.
Geben Sie nun die Details der Knoteninformationen ein.
- Beschreibung: slave01 node agent server server
- Entferntes Stammverzeichnis: /home/jenkins
- Etiketten: slave01
- Startmethode: Starten Sie den Slave-Agenten über SSH, geben Sie die Host-IP-Adresse’10.0.15.21′ ein, wählen Sie die Authentifizierung mit der Berechtigung’Jenkins‘.
Klicken Sie nun auf die Schaltfläche’Speichern‘ und warten Sie, bis sich der Master-Server mit allen Agentenknoten verbunden hat und starten Sie die Agentendienste.
Nachfolgend finden Sie die Ergebnisse, wenn der Master-Server mit allen Agentenknoten verbunden ist.
Jenkins Slave-Knoten wurden dem Master-Server hinzugefügt.
Schritt 5 – Vorbereitung der Slave-Agent-Knoten zur Ausführung des Build-Vorgangs
In diesem Schritt konfigurieren wir den Jenkins-Master so, dass er den Build auf den Slave-Agentenknoten ausführt.
Klicken Sie auf das Menü „Manage Jenkins“ und dann auf „Configure System“.
Gehen Sie nun zum Abschnitt’Slave Setups‘ und definieren Sie alles, was Sie benötigen, wie unten gezeigt.
Mehr Informationen über die’Slave Setups‘ auf dem Link.
Klicken Sie auf die Schaltfläche’Speichern‘ und jetzt sind wir bereit, den Build auf Slave-Agentenknoten auszuführen.
Schritt 6 – Prüfung
Jetzt wollen wir einen neuen einfachen Build für Jenkins erstellen, und wir wollen den Build auf den Botknoten’slave01′ und’slave02′ ausführen.
Klicken Sie im Dashboard von Jenkins auf das Menü „Neuer Eintrag“.
Geben Sie den Namen des Elements ein, wählen Sie das Freestyle-Projekt und klicken Sie auf „OK“.
Geben Sie im allgemeinen Abschnitt die Stellenbeschreibung ein und aktivieren Sie die Option’Beschränken, wo dieses Projekt ausgeführt werden kann‘.
Geben Sie unter’Label Expression‘ den Knoten an, z.B.’slave01′.
Gehen Sie in den Build-Abschnitt und wählen Sie die Option’Shell ausführen‘, geben Sie den Befehl wie unten beschrieben ein.
top -b -n 1 | head -n 10 && hostname
Klicken Sie auf die Schaltfläche „Speichern“, und Sie werden zur Jobseite weitergeleitet.
Klicken Sie auf’Jetzt erstellen‘, um das Projekt zu erstellen, und klicken Sie dann auf das Element im Abschnitt’Build History‘.
Und das Folgende ist mein Ergebnis.
Bauen Sie auf dem Agentenknoten „slave01“ auf.
Bauen Sie auf dem Agentenknoten „slave02“ auf.
Die Installation und Konfiguration der Jenkins Master/Slave-Architektur und der verteilten Builds von Jenkins wurde erfolgreich abgeschlossen.