Erste Schritte mit Salt IT Automation Framework auf AlmaLinux 9

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 basiert auf einer Master- und Minion-Architektur. SaltStack Master ist der zentrale Controller für das Salt-Konfigurationsmanagement und Minions sind Server, die von SaltStack Master verwaltet werden, oder von dir als Zielserver benannte Minions.

SaltStack Master läuft standardmäßig unter Linux, aber die Minions können auf jedem Betriebssystem eingesetzt werden. SaltStack ist ein revolutionäres Konfigurationsmanagement für die automatisierte Bereitstellung, die Remote-Task-Ausführung und Infrastructure as Code. SaltStack kann auch für die Bereitstellung von mehreren Infrastruktur-Servern verwendet werden, einschließlich physischer und virtueller Server, und auch für die Cloud.

Dieses Tutorial zeigt dir, wie du Salt auf AlmaLinux 9 Servern installierst. Außerdem lernst du die grundlegende Verwendung von Salt-Modulen kennen und erstellst das erste Salt-State-Projekt. In diesem Fall wirst du ein Salt-State-Projekt für die Installation von LEMP Stack erstellen.

Voraussetzungen

Um mit diesem Leitfaden zu beginnen, musst du sicherstellen, dass du Folgendes hast:

  • 3 AlmaLinux 9 Server.
  • Einen Nicht-Root-Benutzer mit sudo-Administrator-Rechten.
  • Ein SELinux mit dem Status Permissive oder Disabled.

Einrichten von Firewalld auf Salt Master

Bevor du Salt installierst, musst du die Ports 4505 und 4506 auf dem Salt Master Server öffnen, über die sich die Salt Minions mit dem Salt Master verbinden. Dazu verwendest du Firewalld.

Führe den folgenden Befehl aus, um die Ports 4505 und 4506 für den Salt Master Server zu öffnen.

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

Lade nun die Firewalld neu, um die Änderungen zu übernehmen, und überprüfe dann die Liste der offenen Ports in der Firewalld mit dem folgenden Befehl.

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Nachdem du den Befehl ausgeführt hast, sind die Ports 4505 und 4506 zu firewalld hinzugefügt worden.

firewalld einrichten

Hinzufügen des Salt-Repositorys

Salt-Pakete sind im offiziellen Salt-Repository verfügbar. Jetzt fügst du das Salt-Repository zu allen deinen AlmaLinux-Servern hinzu, sowohl zum Salt Master als auch zu den Minions.

Führe den unten stehenden Befehl aus, um den Salt GPG-Schlüssel zu importieren.

sudo rpm --import https://repo.saltproject.io/salt/py3/redhat/9/x86_64/SALT-PROJECT-GPG-PUBKEY-2023.pub

Lade nun das Salt-Repository mit dem unten stehenden Befehl auf deine Systeme herunter.

curl -fsSL https://repo.saltproject.io/salt/py3/redhat/9/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo

Repo hinzufügen

Sobald der Salt GPG-Schlüssel und das Repository hinzugefügt sind, führe den unten stehenden dnf-Befehl aus, um die Liste der verfügbaren Repositories auf deinen Systemen zu überprüfen und die Metadaten für alle verfügbaren Repositories herunterzuladen.

sudo dnf repolist
sudo dnf makecache

Wenn der Befehl erfolgreich ist, sollte die Ausgabe ähnlich wie die folgende aussehen:

Repo neu laden

Installieren und Konfigurieren von Salt Master

Nachdem du das Salt-Repository hinzugefügt hast, installierst und konfigurierst du das Salt-Master-Paket auf dem Salt-Master-Hauptserver.

Installiere das Salt-Master-Paket mit dem unten stehenden dnf-Befehl. Gib y ein, wenn du aufgefordert wirst, mit der Installation fortzufahren.

sudo dnf install salt-master

salt-master installieren

Sobald die Installation abgeschlossen ist, öffne die Standardkonfiguration von Salt /etc/salt/master mit dem folgenden Befehl des Editors nano.

sudo nano /etc/salt/master

Ändere die Standardoption interface durch deine lokale IP-Adresse und die Option ID durch den Hostnamen deines Servers. In diesem Fall ist der Salt Master-Server mit der lokalen IP-Adresse 192.168.5.50 und dem Hostnamen master konfiguriert.

interface: 192.168.5.50
id: master

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

Als nächstes führst du den folgenden systemctl-Befehl aus, um den Salt-Master-Dienst zu starten und zu aktivieren.

sudo systemctl start salt-master
sudo systemctl enable salt-master

start enable salt-master

Überprüfe abschließend den salt-master-Dienst, um sicherzustellen, dass der Dienst läuft, indem du den folgenden Befehl ausführst.

sudo systemctl status salt-master

Nach erfolgreicher Ausführung sollte die angezeigte Ausgabe aktiv (running) sein, was bedeutet, dass der Salt-Master-Dienst ausgeführt wird.

Salzmeister prüfen

Installieren und Konfigurieren von Salt Minion

Nachdem du Salt Master konfiguriert hast, musst du im nächsten Schritt Salt Minion installieren und die Minion-Server so konfigurieren, dass sie sich mit dem Salt Master verbinden.

Führe den folgenden dnf-Befehl aus, um das salt-minion-Paket auf deinen Minion-Servern zu installieren. Gib y ein, um die Installation zu bestätigen.

sudo dnf install salt-minion

Salz-Minion installieren

Nach der Installation öffnest du die Standard-Salt-Konfiguration /etc/salt/minion mit dem unten stehenden nano-Editor-Befehl.

sudo nano /etc/salt/minion

Gib unter der Option master die IP-Adresse des Salt-Masters ein.

master: 192.168.5.50

Gib die lokale IP-Adresse des Minions in die Option interface und den Hostnamen des Servers in die Option id ein.

interface: 192.168.5.20
id: minion1

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

Als Nächstes führst du den folgenden systemctl-Befehl aus, um den salt-minion-Dienst zu starten und zu aktivieren.

sudo systemctl start salt-minion
sudo systemctl enable salt-minion

start enable salt-minion

Sobald der salt-minion-Dienst gestartet ist, überprüfe ihn mit dem folgenden Befehl.

sudo systemctl status salt-minion

Wenn alles klappt, wird die Ausgabe aktiv (running) sein, was bestätigt, dass der Salt-Minion-Dienst läuft.

Salzminion prüfen

Registrierung von Salt Minions bei Salt Master

Zu diesem Zeitpunkt läuft der Salt-Minion-Dienst. Daraufhin senden die Salt Minions eine Anfrage, um sich beim Salt Master zu registrieren. Um die Registrierung der Salt Minions zu beantragen, musst du den Fingerabdruckschlüssel auf dem Salt Master akzeptieren.

Gehe zum Salt Master und führe den unten stehenden Befehl salt-key aus, um die Liste der Fingerabdruckschlüssel zu erhalten.

salt-key --finger-all

Hier findest du die Fingerabdrücke der Salt Minion-Server minion1 und minion2, die noch den Status„Nicht akzeptierte Schlüssel“ haben.

Listenschlüssel

Führe den folgenden Befehl aus, um den Salt Minion-Schlüssel für die beiden Server minion1 und minion2 zu akzeptieren.

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

Gib Y ein, wenn du aufgefordert wirst, den Schlüssel zu akzeptieren, und du solltest die folgende Ausgabe erhalten:„Key for minion minion1/2 accepted„.

Schlüssel annehmen

Überprüfe nun die Liste der Fingerprint-Schlüssel auf dem Salt Master erneut mit dem folgenden Befehl.

salt-key --finger-all

Hier ist der Fingerabdruck von Salt Minion für die Server minion1 und minion2 im Abschnitt Akzeptierte Schlüssel verfügbar.

Listenschlüssel

Jetzt kannst du die Salt Minion-Server vom Salt Master aus über die Salt-Befehlszeile steuern.

Führe den folgenden Salt-Befehl aus, um die Verbindung zwischen Salt Master und Minions zu überprüfen und die Salt-Version auf den Minion-Servern zu überprüfen.

salt '*' test.ping
salt '*' test.version

Wenn die Verbindung zwischen Salt Master und Minion erfolgreich ist, wird die Ausgabe True angezeigt. Außerdem kannst du sehen, dass Salt 3006.4 installiert ist, was sich aus dem Parameter test.version ergibt.

Prüfsalz

Außerdem kannst du den Ziel-Minion mit dem Salt-Befehl wie folgt angeben.

salt minion1 test.ping

Grundlegende Verwendung des Salt State Module

Im folgenden Abschnitt erfährst du, wie du das Salt State Module für die Verwaltung von Minion-Servern nutzen kannst. Du wirst einige Salt State Module kennenlernen, z. B. cmd für die Ausführung beliebiger Linux-Befehle, pkg für die Verwaltung von Paketen und Repositories und das service-Modul für die Verwaltung von Diensten.

Ausführen beliebiger Befehle über das cmd-Modul

Führe den folgenden Befehl aus, um bestimmte Linux-Befehle über das cmd-Statusmodul auszuführen. In diesem Beispiel überprüfst du die Details des Linux-Kernels mit dem Befehl uname -a.

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

Linux-Befehl über Salt ausführen

Pakete und Repository über das pkg Modul verwalten

Verwende nun das folgende pkg-Statusmodul, um Pakete und Repositories auf deinen Minion-Servern zu verwalten.

Überprüfe die Liste der Repositories mit pkg.list_repos und aktualisiere die Repositories mit pkg.refresh_db.

salt '*' pkg.list_repos
salt '*' pkg.refresh_db

Du kannst die Liste der verfügbaren Paketaktualisierungen auch mit dem Argument pkg.list_upgrades überprüfen.

salt '*' pkg.list_upgrades

Um ein bestimmtes Paket zu installieren, verwendest du das folgende pkg.install.

salt '*' pkg.install vim

pkg install

Dienste über das Service-Modul verwalten

Als Nächstes kannst du das Modul service state verwenden, um die Dienste auf deinen Minion-Servern zu verwalten.

Verwende das Argument service.available, um sicherzustellen, dass der Dienst auf dem Zielserver verfügbar ist. Oder verwende das Argument service.enabled, um sicherzustellen, dass der Zieldienst aktiviert ist, oder du kannst auch service.get_running verwenden, um sicherzustellen, dass der Dienst läuft.

salt '*' service.available chronyd
salt '*' service.enabled chronyd
salt '*' service.get_running

Scheckdienst

Schließlich kannst du auch den Startbefehl überprüfen, der von einem bestimmten Dienst ausgeführt wird, indem du das Argument service.execs verwendest.

salt '*' service.execs

Ersten Salt-Status erstellen

In diesem Abschnitt erstellst du das erste Salt-State-Projekt für die Installation des LEMP-Stacks (Nginx, MariaDB und PHP-FPM) auf den Minion-Zielservern.

Bevor du fortfährst, führe den folgenden Befehl aus, um das Repository-Modul zu aktivieren, das für die Installation bestimmter Versionspakete verwendet werden soll.

salt '*' cmd.run 'sudo dnf module enable nginx:1.22 -y'
salt '*' cmd.run 'sudo dnf module enable php:8.1 -y'

Repo-Modul über Salt aktivieren

Erstelle nun ein neues Konfigurationsverzeichnis /srv/salt/, in dem du deinen Salt-Status speichern wirst.

mkdir -p /srv/salt/

Führe den folgenden Befehl aus, um ein neues Projektverzeichnis /srv/salt/lemp und die Datei init.sls zu erstellen.

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

Füge die folgende Konfiguration in die Datei ein. In diesem Fall installierst du die LEMP Stack-Pakete über das pkg-Statusmodul auf den Minion-Servern und stellst sicher, dass jeder Dienst läuft und über das Service-Statusmodul aktiviert ist.

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

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

Als Nächstes führst du den folgenden Befehl aus, um die Statuskonfiguration für das lemp-Projekt anzuzeigen.

sudo salt * state.show_sls lemp

Nachdem der Befehl ausgeführt wurde, solltest du eine detaillierte Konfiguration wie die folgende erhalten.

Salzstatus prüfen

Führe nun den folgenden Befehl aus, um den lemp-Status auf die Minion-Server anzuwenden.

sudo salt '*' state.apply lemp

Du solltest den generierten Bericht der automatischen Installation sehen. Die Installation der LEMP-Stack-Pakete auf beiden Minion-Servern war in diesem Fall erfolgreich.

Salzzustand anwenden

Unten siehst du die Details, wenn die Dienste laufen und aktiviert sind.

jeder Dienst läuft

Fazit

Abschließend hast du nun Salt auf AlmaLinux 9 Servern Schritt für Schritt installiert. Du hast sowohl Salt Master als auch Minions auf AlmaLinux-Servern installiert und konfiguriert. Außerdem hast du die grundlegende Verwendung von Salt-Zustandsmodulen gelernt und dein erstes Salt-Zustandsprojekt für die Installation von LEMP Stack erstellt.

Das könnte dich auch interessieren …