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
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
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
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
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
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
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
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
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
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
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.
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
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.
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.