Wie man SaltStack Master und Minion auf Rocky Linux einrichtet

Salt oder Saltstack ist ein Open-Source-IT-Automatisierungsframework, mit dem Administratoren Befehle aus der Ferne direkt auf mehreren Rechnern ausführen können. Salt ist hauptsächlich in Python geschrieben und mit einer Master- und Minion-Architektur konzipiert. SaltStack Master ist der zentrale Controller für das Salt-Konfigurationsmanagement, und Minions sind Server, die vom SaltStack Master verwaltet werden oder von dir als Zielserver benannt werden.

SaltStack Master läuft standardmäßig unter Linux, aber Minions können jedes beliebige Betriebssystem sein. SaltStack ist ein revolutionäres Konfigurationsmanagement für die automatisierte Bereitstellung, die Remote-Task-Ausführung und Infrastructure as Code. SaltStack kann auch verwendet werden, um mehrere Infrastrukturserver bereitzustellen, darunter physische und virtuelle Server und auch die Cloud.

In diesem Leitfaden installierst du SaltStack Master und Minion auf Rocky Linux Servern. Außerdem lernst du, wie du Salt nutzt, um beliebige Befehle von SaltStack Master gegen Salt Minions auszuführen. Zum Schluss erfährst du auch, wie du einen Salt-Status für die Installation des grundlegenden LEMP-Stacks (Linux, Nginx, MariaDB und PHP-FPM) erstellst.

Voraussetzungen

Für dieses Tutorial brauchst du mindestens zwei oder mehr Rocky-Linux-Server. Alle diese Server sollten einen Nicht-Root-Benutzer mit Root-/Administrator-Rechten haben.

Einrichten der Datei /etc/hosts

In diesem Beispiel werden wir drei Rocky Linux-Server für die SaltStack-Installation verwenden. Ein Server wird als Master und zwei Server werden als Minions verwendet.

Im Folgenden sind die Rocky Linux-Server aufgeführt, die wir verwenden werden:

Hostname    IP Address      Used as
---------------------------------------------
master      192.168.5.10    SaltStack Master
minion1     192.168.5.15    SaltStack Minion
minion2     192.168.5.16    SaltStack Minion

Bevor du die SaltStack-Pakete installierst, musst du die Datei /etc/hosts auf jedem Linux-Host einrichten.

Bearbeite die Datei /etc/hosts mit dem folgenden Befehl.

sudo nano /etc/hosts

Füge nun die folgende Konfiguration in die Datei ein.

master 192.168.5.10
minion1 192.168.5.15
minion2 192.168.5.16

Wenn du fertig bist, speichere und schließe die Datei.

Hinzufügen des SaltStack-Repositorys

Die SaltStack-Pakete sind in seinem offiziellen Repository verfügbar. Du fügst das SaltStack-Repository und den GPG-Schlüssel zu allen deinen Rocky Linux-Servern hinzu.

Führe den folgenden Befehl aus, um den GPG-Schlüssel für das SaltStack-Repository zu importieren. Dann fügst du das SaltStack-Repository hinzu. In diesem Beispiel fügst du die neueste Version des SaltStack-Repositorys hinzu.

sudo rpm --import https://repo.saltproject.io/py3/redhat/8/x86_64/latest/SALTSTACK-GPG-KEY.pub
curl -fsSL https://repo.saltproject.io/py3/redhat/8/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo

Repository und Schlüssel hinzufügen

Führe nun den folgenden Befehl aus, um die Liste der Repositories auf deinem Rocky Linux Server zu überprüfen und zu verifizieren. Aktualisiere und generiere dann neue Metadaten für alle verfügbaren Repositories.

Du solltest sehen, dass das SaltStack-Repository dem Rocky Linux-Server hinzugefügt wurde.

sudo dnf repolist
sudo dnf makecache

Repository prüfen und neue Metadaten erzeugen

Installation von SaltStack Master

Du hast das SaltStack-Repository zu allen deinen Rocky Linux-Servern hinzugefügt. Jetzt wirst du den SaltStack Master auf dem „Master“-Server installieren und einrichten.

Führe zunächst den unten stehenden DNF-Befehl aus, um das Paket „salt-master“ zu installieren. Dieses Paket ist das Hauptpaket für die Einrichtung des SaltStack Masters.

Gib Y ein, um die Installation zu bestätigen, und drücke ENTER, um die Installation zu starten.

sudo dnf install salt-master

salt-master installieren

Nach Abschluss der Installation bearbeitest du die SaltStack Master-Konfiguration„/etc/salt/master“ mit dem folgenden Befehl.

sudo nano /etc/salt/master

Dekommentiere die Option „interface:“ und ändere die IP-Adresse mit der IP-Adresse deines „Master“-Servers. In diesem Beispiel lautet die IP-Adresse von SaltStack Master„192.168.5.10„.

interface: 192.168.5.10

Speichere und schließe die Datei, wenn du fertig bist.

Als Nächstes aktivierst du den Dienst„salt-master„, damit er beim Systemstart ausgeführt wird, und startest den Dienst „salt-master“. Überprüfe und verifiziere den „salt-master“-Dienst.

Du solltest sehen, dass der„salt-master„-Dienst aktiviert ist und läuft.

sudo systemctl enable salt-master && sudo systemctl start salt-master
sudo systemctl status salt-master

salt-master prüfen und verifizieren

Auf dem SaltStack Master musst du die TCP-Ports 4505 und 4506 öffnen, die von den SaltStack Minions für die Verbindung zum SaltStack Master verwendet werden.

Führe den folgenden „firewall-cmd“ Befehl aus, um die Ports 4505 und 4506 zu öffnen. Lade dann die Firewalld neu.

sudo firewall-cmd --zone=public --permanent --add-port={4505,4506}/tcp
sudo firewall-cmd --reload

Überprüfe abschließend die Firewalld-Regeln mit dem folgenden Befehl. Nun sollten die Ports 4505 und 4506 in der Firewalld verfügbar sein.

sudo firewall-cmd --list-all

Firewalled Salt-Master

Installation von SaltStack Minion

Du hast den SaltStack Master installiert und konfiguriert. Jetzt wirst du SaltStack Minion auf den beiden Servern„minion1“ und„minion2“ installieren und einrichten.

Verschiebe die Server„minion1“ und “ minion2“ und führe dann den unten stehenden DNF-Befehl aus, um das Paket „salt-minion“ zu installieren. Dieses Paket muss auf allen SaltStack Minion-Hosts installiert werden.

Gib Y ein, um die Installation zu bestätigen und drücke ENTER. Die Installation von„salt-minion“ beginnt nun.

sudo dnf install salt-minion

Salz-Minion installieren

Nachdem du die Installation abgeschlossen hast, bearbeite die SaltStack Minion-Konfigurationsdatei„/etc/salt/minion“ mit dem folgenden Befehl.

sudo nano /etc/salt/minion

Entferne den Kommentar in der Option„master:“ und füge die IP-Adresse oder den Hostnamen des SaltStack-Masters hinzu. In diesem Beispiel läuft der SaltStack-Master unter der Server-IP-Adresse„192.168.5.10„.

master: 192.168.5.10

Speichere und schließe die Datei, wenn du fertig bist.

Als Nächstes führst du den folgenden Befehl aus, um den Dienst„salt-minion“ zu aktivieren und zu starten. Überprüfe und verifiziere den„salt-minion“ Dienst.

Du solltest sehen, dass der„salt-minion„-Dienst aktiviert ist und beim Systemstart automatisch ausgeführt wird. Der aktuelle Status des„salt-minion„-Dienstes ist „running“.

sudo systemctl enable salt-minion && sudo systemctl start salt-minion
sudo systemctl status salt-minion

Salzminion prüfen

Hinzufügen von Minion-Servern zu SaltStack Master

Du hast nun die Installation von SaltStack Master auf dem „master“-Server und von SaltStack Minion auf den Servern „minion1“ und „minion2“ abgeschlossen. Um SaltStack Minions zum SaltStack Master hinzuzufügen, übernimmst du den Key Fingerprint der beiden Server „minion1“ und „minion2“ vom „Master“-Server.

Gehe zurück zum „Master“-Server und führe den unten stehenden Salt-Befehl aus, um alle verfügbaren Key Fingerprints zu überprüfen. Du solltest sehen, dass es zwei„Unaccepted Keys“ von den Servern„minion1“ und„minion2“ gibt.

salt-key --finger-all

Fingerabdruckschlüssel auflisten

Um den Schlüssel-Fingerabdruck der Server„minion1“ und„minion2“ zu akzeptieren, führe den unten stehenden Befehl salt-key aus. Du wirst aufgefordert, den Fingerabdruck des Schlüssels zu akzeptieren. Gib Y ein, um zu bestätigen und den Schlüssel hinzuzufügen.

salt-key -a minion1
salt-key -a minion2

Als Nächstes überprüfst du alle verfügbaren Schlüssel-Fingerabdrücke mit dem unten stehenden Befehl. Du solltest nun beide Fingerabdruck-Schlüssel der Server„minion1“ und„minion2“ zum SaltStack-Master hinzugefügt bekommen. Beide Key Fingerprints sind im Abschnitt„Accepted Keys“ verfügbar.

salt-key --finger-all

Fingerabdruckschlüssel hinzufügen

Nachdem du SaltStack Minion-Server zum SaltStack Master hinzugefügt hast, führe den folgenden Salt-Befehl auf dem„Master„-Server aus, um die Server„minion1“ und„minion2“ zu testen und anzupingen.

Wenn deine Konfiguration erfolgreich ist, solltest du die Ausgabemeldung„True“ erhalten, was bedeutet, dass die SaltStack Minion-Server dem SaltStack Master hinzugefügt wurden.

salt minion1 test.ping
salt minion2 test.ping

Du kannst auch ein Sternchen„*“ verwenden, um alle SaltStack Minion-Server auszuwählen.

salt '*' test.ping

SaltStack Test ping

Du kannst auch die aktuelle SaltStack-Version, die auf den Servern„minion1“ und„minion2“ installiert ist, mit dem folgenden Befehl überprüfen.

Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste Version der SaltStack-Software v3004.2, die auf allen SaltStack-Servern installiert ist.

salt '*' test.version

Ausführen beliebiger Befehle mit SaltStack

SaltStack ermöglicht es dir, beliebige Befehle vom Master-Server auf allen Minion-Servern auszuführen. Dazu musst du ein von Saltstack bereitgestelltes Ausführungsmodul verwenden.

Führe den folgenden Salt-Befehl vom Master-Server aus. Dadurch wird der Befehl uname -a auf allen Minion-Servern ausgeführt, und dieser Befehl wird über das cmd-Modul ausgeführt.

salt '*' cmd.run 'uname -a'

Wie du auf dem folgenden Screenshot sehen kannst, geben alle Minionserver die Ausgabe des Befehls uname -a zurück.

artbitrary command saltstack ausführen

Ein weiteres Beispiel ist das Modul pkg, mit dem du die Paketinstallation, das Repository und alles, was mit der Paketverwaltung zu tun hat, verwalten kannst. Es unterstützt mehrere Linux-Distributionen, darunter RHEL-basierte Distributionen wie CentOS und Rocky Linux, aber auch Debian-basierte Systeme wie Ubuntu.

Aktualisiere die verfügbaren Repositories auf allen Minion-Servern.

salt '*' pkg.refresh_db

Überprüfe das Paket bash mit dem salt-Befehl unten.

salt '*' pkg.show bash

Installiere das Paket chrony auf allen Minion-Servern.

salt '*' pkg.install chrony

Überprüfe die Liste der Repositories auf allen Minion-Servern.

salt '*' pkg.list_repos

Überprüfe die Liste der verfügbaren Paket-Updates auf allen Minion-Servern.

salt '*' pkg.list_upgrades

Ein weiteres gutes Beispiel ist das Servicemodul, mit dem du Dienste auf mehreren Linux-Distributionen verwalten kannst, einschließlich der Distributionen mit systemd.

Prüfe, ob der chronyd-Dienst verfügbar ist oder nicht.

salt '*' service.available chronyd

Aktiviere den chronyd-Dienst, damit er beim Systemstart auf allen Minion-Servern gestartet wird.

salt '*' service.enabled chronyd

Überprüfe die Liste der laufenden Dienste auf allen Servern.

salt '*' service.get_running

Überprüfe den Befehl ExecStart= für jeden verfügbaren Dienst auf allen Servern.

salt '*' service.execs

Installieren von LEMP Stack mit SaltStack State

Du hast den grundlegenden Salt-Befehl gelernt, um einen beliebigen Befehl gegen alle SaltStack Minion-Server auszuführen. Jetzt erstellst du eine neue SaltStack-Statusdatei, um den grundlegenden LEMP-Stack (Linux, Nginx, MariaDB und den PHP-FPM) zu installieren. Hier kannst du SaltStack als Konfigurationsmanagement für deine Serverinfrastruktur und die automatische Anwendungsbereitstellung nutzen.

Das Rocky Linux Repository bietet mehrere Versionen von Nginx-, MariaDB- und PHP-FPM-Paketen. Um die neueste Version dieser Pakete zu installieren, musst du sie über das DNF-Paketmanager-Modul aktivieren.

Zum Zeitpunkt der Erstellung dieses Artikels gibt es kein SaltStack-Modell, das dem Befehl„dnf module“ für RHEL-basierte Distributionen entspricht. Daher musst du das Modul manuell über den SaltStack-Befehl arbitrary aktivieren.

Führe den folgenden Befehl aus, um das Modul für Nginx v1.20, MariaDB v10.5 und die PHP-Pakete v8.0 zu aktivieren.

salt '*' cmd.run 'sudo dnf module enable nginx:1.20 -y'
salt '*' cmd.run 'sudo dnf module enable mariadb:10.5 -y'
salt '*' cmd.run 'sudo dnf module enable php:8.0 -y'

Erstelle nun ein neues Verzeichnis für die zentrale Konfigurationsverwaltung „/srv/salt/lemp“ und erstelle mit dem folgenden Befehl eine neue Datei „init.sls“.

mkdir -p /srv/salt/lemp
nano /srv/salt/lemp/init.sls

Füge die folgende Konfiguration in die Datei ein. In diesem Beispiel erstellen wir den Salt-Status„lemp“ für die Installation der LEMP-Stack-Pakete. Außerdem stellen wir sicher, dass alle LEMP Stack-Dienste (Nginx, MariaDB und PHP-FPM) aktiviert sind und auf allen SaltStack Minion-Servern laufen.

lemp_stack:
 pkg.installed:
   - pkgs:
     - nginx
     - mariadb-server
     - php
     - php-fpm
nginx:
service.running:
- enable: True
- reload: True

mariadb:
service.running:
- enable: True
- reload: True

php-fpm:
service.running:
- enable: True
- reload: True

Wenn du fertig bist, speichere und schließe die Datei.

Um die Konfiguration deines Salt-Stacks zu überprüfen, verwende den folgenden Salt-Befehl. Mit diesem Befehl wird deine Salt-Konfiguration auf den SaltStack Minion-Servern getestet und verifiziert.

sudo salt * state.show_sls lemp

Teste Salz

Um den Salt-Status auf alle SaltStack Minion-Server anzuwenden, kannst du den unten stehenden salt-Befehl verwenden. Nun wird der LEMP Stack automatisch auf den Servern„minion1“ und„minion2“ installiert.

sudo salt '*' state.apply lemp

Im folgenden Screenshot siehst du, dass der LEMP Stack auf den beiden Servern„minion1“ und„minion2“ installiert ist.

LEMP Stack mit SaltStack-Status installieren

Fazit

In diesem Lernprogramm hast du die Installation von SaltStack Master und SaltStack Minion auf Rocky Linux Servern abgeschlossen. Außerdem hast du die grundlegende Verwendung des Salt-Befehls gelernt, um ein beliebiges Kommando gegen SaltStack Minion auszuführen. Schließlich hast du auch gelernt, wie du eine Salt-Statuskonfiguration für die automatische Installation des LEMP-Stacks erstellst und SaltStack als Konfigurationsmanagement für Anwendungsimplementierungen einrichtest.

Das könnte dich auch interessieren …