So installierst du Saltstack Master und Minion unter Debian 11

SaltStack ist eine kostenlose, quelloffene und Python-basierte Automatisierungs- und Konfigurationsmanagement-Software. Es ist ein Kommandozeilen-Tool, das dir hilft, deine Infrastruktur von einer zentralen Stelle aus zu verwalten. SoltStack besteht aus vier Komponenten. Im Folgenden werden die einzelnen Komponenten kurz erläutert:

  • Salt Master fungiert als Kommandozeilen-Controller für seine Untergebenen. Er dient zur Steuerung und Verwaltung einer Reihe von Minions.
  • Salt Minions sind Slave-Daemons, die Konfigurationen und Befehle vom Master erhalten.
  • DieFormel sind Konfigurationsverwaltungsdateien.
  • Execution ist eine Reihe von Befehlen und Modulen, die auf den Minions ausgeführt werden.

In diesem Artikel zeige ich dir, wie du SaltStack Master und Minion Systeme auf Debian 11 installierst.

Voraussetzungen

  • Zwei Server, auf denen Debian 11 läuft.
  • Ein Root-Passwort ist auf dem Server eingerichtet.

Saltstack Master installieren

Standardmäßig ist SaltStack nicht im Standard-Repository von Debian 11 enthalten. Daher musst du das SaltStack-Repository zur APT hinzufügen. Du kannst es hinzufügen, indem du den folgenden Befehl ausführst:

curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/debian/11/amd64/latest/salt-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/debian/11/amd64/latest bullseye main" | tee /etc/apt/sources.list.d/salt.list

Sobald das Repository hinzugefügt ist, aktualisierst du den Repository-Cache mit dem folgenden Befehl:

apt-get update -y

Als Nächstes installierst du die erforderlichen Abhängigkeiten mit dem folgenden Befehl:

apt-get install python3 salt-common -y

Als Nächstes installierst du den SaltStack-Master mit dem folgenden Befehl:

apt-get install salt-master -y

Nach der erfolgreichen Installation kannst du mit dem nächsten Schritt fortfahren.

Saltstack Master konfigurieren

Als nächstes musst du die Bind-Schnittstelle in der SaltSTack-Konfigurationsdatei definieren.

nano /etc/salt/master

Ändere die folgende Zeile:

interface: 0.0.0.0

Speichere und schließe die Datei und starte den SaltStack-Master mit dem folgenden Befehl neu:

systemctl restart salt-master

Jetzt kannst du den Status von SaltStack mit dem folgenden Befehl überprüfen:

systemctl status salt-master

Du erhältst die folgende Ausgabe:

? salt-master.service - The Salt Master Server
     Loaded: loaded (/lib/systemd/system/salt-master.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-02-12 07:39:48 UTC; 9s ago
       Docs: man:salt-master(1)
             file:///usr/share/doc/salt/html/contents.html
             https://docs.saltproject.io/en/latest/contents.html
   Main PID: 19403 (salt-master)
      Tasks: 32 (limit: 2341)
     Memory: 201.5M
        CPU: 6.109s
     CGroup: /system.slice/salt-master.service
             ??19403 /usr/bin/python3 /usr/bin/salt-master
             ??19407 /usr/bin/python3 /usr/bin/salt-master
             ??19431 /usr/bin/python3 /usr/bin/salt-master
             ??19434 /usr/bin/python3 /usr/bin/salt-master
             ??19435 /usr/bin/python3 /usr/bin/salt-master
             ??19436 /usr/bin/python3 /usr/bin/salt-master
             ??19437 /usr/bin/python3 /usr/bin/salt-master
             ??19444 /usr/bin/python3 /usr/bin/salt-master
             ??19445 /usr/bin/python3 /usr/bin/salt-master
             ??19446 /usr/bin/python3 /usr/bin/salt-master
             ??19448 /usr/bin/python3 /usr/bin/salt-master
             ??19451 /usr/bin/python3 /usr/bin/salt-master
             ??19454 /usr/bin/python3 /usr/bin/salt-master

Feb 12 07:39:48 debian11 systemd[1]: Starting The Salt Master Server...
Feb 12 07:39:48 debian11 systemd[1]: Started The Salt Master Server.

Wenn du fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Saltstack Minion installieren und konfigurieren

Zu diesem Zeitpunkt ist SaltStack Master installiert und konfiguriert. Melde dich nun auf einem anderen Rechner an und füge das SaltStack Minion-Repository mit dem folgenden Befehl hinzu:

curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/debian/11/amd64/latest/salt-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/debian/11/amd64/latest bullseye main" | tee /etc/apt/sources.list.d/salt.list

Sobald das Repository hinzugefügt ist, aktualisierst du den Repository-Cache mit dem folgenden Befehl:

apt-get update -y

Als Nächstes installierst du SaltStack Minion mit dem folgenden Befehl:

apt-get install salt-minion -y

Nach der erfolgreichen Installation bearbeitest du die SaltStack Minion-Konfigurationsdatei und definierst die Master-IP-Adresse.

nano /etc/salt/minion

Ändere die folgende Zeile:

master: salt-master-ip

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

Als Nächstes musst du die Minions mit dem öffentlichen Fingerabdruck des Masters authentifizieren.

Zeige auf dem Salt Master-Rechner alle Fingerabdrücke mit dem folgenden Befehl an:

salt-key --finger-all

Du erhältst die folgende Ausgabe:

Local Keys:
master.pem:  b7:f0:ed:19:bf:e8:e0:9d:c3:9c:a2:09:2c:97:2f:6b:0f:cb:eb:76:3d:d7:d5:a9:7d:0c:3a:60:6e:9f:d7:78
master.pub:  5e:4f:2b:37:41:cc:4b:9c:b0:ed:cb:0a:fb:c7:59:54:5f:11:34:ab:d2:99:96:c1:e7:ef:4d:95:b0:7c:d3:d1

Kopiere nun die Zeile master.pub fingerprint und füge sie der Minion-Konfigurationsdatei hinzu.

Auf dem Minion-Rechner bearbeitest du die Konfigurationsdatei:

nano /etc/salt/minion

Füge den Master-Fingerabdruck wie unten gezeigt hinzu:

master_finger:  '5e:4f:2b:37:41:cc:4b:9c:b0:ed:cb:0a:fb:c7:59:54:5f:11:34:ab:d2:99:96:c1:e7:ef:4d:95:b0:7c:d3:d1'

Du musst auch den Namen des Minions festlegen:

id: Minion1

Speichere und schließe die Datei und starte den SaltStack Minion mit dem folgenden Befehl neu:

systemctl restart salt-minion

Du kannst den Status des SaltStack Minion auch mit dem folgenden Befehl überprüfen:

systemctl status salt-minion

Du erhältst die folgende Ausgabe:

? salt-minion.service - The Salt Minion
     Loaded: loaded (/lib/systemd/system/salt-minion.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-02-12 07:46:04 UTC; 7s ago
       Docs: man:salt-minion(1)
             file:///usr/share/doc/salt/html/contents.html
             https://docs.saltproject.io/en/latest/contents.html
   Main PID: 2324 (salt-minion)
      Tasks: 8 (limit: 2341)
     Memory: 59.9M
        CPU: 1.185s
     CGroup: /system.slice/salt-minion.service
             ??2324 /usr/bin/python3 /usr/bin/salt-minion
             ??2326 /usr/bin/python3 /usr/bin/salt-minion
             ??2328 /usr/bin/python3 /usr/bin/salt-minion

Feb 12 07:46:04 debian11 systemd[1]: Starting The Salt Minion...
Feb 12 07:46:04 debian11 systemd[1]: Started The Salt Minion.

Du kannst auch den Fingerabdruck des Minions mit dem folgenden Befehl überprüfen:

salt-call key.finger --local

Du erhältst die folgende Ausgabe:

local:
    14:12:ef:33:d2:1e:49:23:7b:a2:74:8d:19:fc:be:5e:6d:a6:57:ec:4f:a9:da:23:69:3f:62:1b:6b:4b:2f:27

Überprüfe den Fingerabdruck auf der SaltStack Master-Maschine mit dem folgenden Befehl:

salt-key --finger-all

Du erhältst die folgende Ausgabe:

Local Keys:
master.pem:  b7:f0:ed:19:bf:e8:e0:9d:c3:9c:a2:09:2c:97:2f:6b:0f:cb:eb:76:3d:d7:d5:a9:7d:0c:3a:60:6e:9f:d7:78
master.pub:  5e:4f:2b:37:41:cc:4b:9c:b0:ed:cb:0a:fb:c7:59:54:5f:11:34:ab:d2:99:96:c1:e7:ef:4d:95:b0:7c:d3:d1
Unaccepted Keys:
Minion1:  14:12:ef:33:d2:1e:49:23:7b:a2:74:8d:19:fc:be:5e:6d:a6:57:ec:4f:a9:da:23:69:3f:62:1b:6b:4b:2f:27

Auf dem SaltStack Master akzeptierst du den Minion mit folgendem Befehl:

salt-key -a Minion1

Du erhältst die folgende Ausgabe:

The following keys are going to be accepted:
Unaccepted Keys:
Minion1
Proceed? [n/Y] Y
Key for minion Minion1 accepted.

Überprüfe nun die Verbindung zwischen Master und Minion mit dem folgenden Befehl:

salt Minion1 test.ping

Du erhältst die folgende Ausgabe:

Minion1:
    True

Wenn du fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Minions vom Master aus steuern

Nach der erfolgreichen Verbindung zwischen Master und Minion. Beginnen wir damit, einige Befehle für die Minions auszuführen.

Führe den folgenden Befehl aus, um den verfügbaren Speicherplatz auf dem Minion aufzulisten:

salt '*' disk.usage

Du erhältst die folgende Ausgabe:

Minion1:
    ----------
    /:
        ----------
        1K-blocks:
            51538400
        available:
            47658628
        capacity:
            4%
        filesystem:
            /dev/sda1
        used:
            1661604
    /dev:
        ----------
        1K-blocks:
            998936
        available:
            998936
        capacity:
            0%
        filesystem:
            udev
        used:
            0
    /dev/shm:
        ----------
        1K-blocks:
            1015232
        available:
            1015152
        capacity:
            1%
        filesystem:
            tmpfs
        used:
            80

Um das Apache-Paket auf dem Minion zu installieren, führe den folgenden Befehl aus:

salt Minion1 pkg.install apache2

Du erhältst die folgende Ausgabe:

Minion1:
    ----------
    apache2:
        ----------
        new:
            2.4.52-1~deb11u2
        old:
    apache2-bin:
        ----------
        new:
            2.4.52-1~deb11u2
        old:
    apache2-data:
        ----------
        new:
            2.4.52-1~deb11u2
        old:
    apache2-utils:
        ----------
        new:
            2.4.52-1~deb11u2
        old:
    libapr1:
        ----------
        new:
            1.7.0-6+deb11u1
        old:
    libaprutil1:
        ----------
        new:
            1.6.1-5
        old:
    libaprutil1-dbd-sqlite3:
        ----------
        new:
            1.6.1-5
        old:
    libaprutil1-ldap:
        ----------
        new:
            1.6.1-5
        old:

Um den freien Speicherplatz auf dem Minion zu überprüfen, führe den folgenden Befehl aus:

salt '*' cmd.run 'free -m'

Du erhältst die folgende Ausgabe:

Minion1:
                   total        used        free      shared  buff/cache   available
    Mem:            1982         140        1392           2         450        1691
    Swap:              0           0           0

Salt State File zur Verwaltung von Minions verwenden

Zustandsdateien werden auch als Konfigurationsverwaltungsdateien bezeichnet und dienen der Konfiguration und Verwaltung von Minions.

Um eine State-Datei zu erstellen, musst du zunächst die Umgebungsbasis für SaltStack erstellen.

mkdir /src/salt

Als Nächstes erstellst du eine State-Datei mit dem folgenden Befehl:

nano /src/salt/setup.sls

Füge den folgenden Code ein, um PHP, UNZIP und das Apache-Paket auf Minions zu installieren:

network_utilities: 
 pkg.installed: 
   - pkgs: 
     - php 
     - unzip 

apache2_pkg: 
 pkg.installed: 
   - name: apache2 

apache2_service: 
 service.running: 
   - name: apache2 
   - enable: True 
   - require: 
     - pkg: apache2_pkg

Speichere und schließe die Datei und wende die Konfiguration mit folgendem Befehl auf alle Minions an:

salt '*' state.apply setup

Du erhältst die folgende Ausgabe:

Minion1:
----------
          ID: network_utilities
    Function: pkg.installed
      Result: True
     Comment: The following packages were installed/updated: php, unzip
     Started: 07:51:22.424504
    Duration: 17349.907 ms
     Changes:   
              ----------
              libapache2-mod-php7.4:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php:
                  ----------
                  new:
                      2:7.4+76
                  old:
              php-common:
                  ----------
                  new:
                      2:76
                  old:
              php7.4:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php7.4-cli:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php7.4-common:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php7.4-json:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php7.4-opcache:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php7.4-readline:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              psmisc:
                  ----------
                  new:
                      23.4-2
                  old:
              unzip:
                  ----------
                  new:
                      6.0-26
                  old:
----------
          ID: apache2_pkg
    Function: pkg.installed
        Name: apache2
      Result: True
     Comment: All specified packages are already installed
     Started: 07:51:39.780956
    Duration: 1029.457 ms
     Changes:   
----------
          ID: apache2_service
    Function: service.running
        Name: apache2
      Result: True
     Comment: The service apache2 is already running
     Started: 07:51:40.812210
    Duration: 35.61 ms
     Changes:   

Summary for Minion1
------------
Succeeded: 3 (changed=1)
Failed:    0
------------
Total states run:     3
Total run time:  18.415 s

Fazit

Glückwunsch! Du hast SaltStack Master und Minion erfolgreich auf einem Debian 11 Server installiert und konfiguriert. Außerdem haben wir dir erklärt, wie du Minions mithilfe von Statusdateien und der Kommandozeile verwalten kannst. Ich hoffe, das hilft dir, deine Infrastruktur zu automatisieren und von einem zentralen Ort aus zu verwalten. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.

Das könnte dich auch interessieren …