SaltStack è un software di gestione della configurazione e dell'automazione gratuito, open source e basato su Python. È uno strumento da riga di comando che ti aiuta a gestire la tua infrastruttura da una posizione centrale. SoltStack è composto da quattro componenti. Di seguito viene mostrata una breve spiegazione di ciascun componente:
- Maestro del sale funge da controller della riga di comando per i suoi servitori. Viene utilizzato per controllare e gestire un certo numero di servitori.
- Salvatori sono demoni slave che ricevono configurazioni e comandi dal master.
- Formula è il file di gestione della configurazione.
- Esecuzione è un numero di comandi e moduli che vengono eseguiti sui minion.
In questo articolo, ti mostrerò come installare i sistemi SaltStack Master e Minion su Debian 11.
Prerequisiti
- Due server che eseguono Debian 11.
- Sul server è configurata una password di root.
Installa Saltstack Master
Per impostazione predefinita, SaltStack non è incluso nel repository predefinito di Debian 11. Quindi dovrai aggiungere il repository SaltStack ad APT. Puoi aggiungerlo eseguendo il seguente comando:
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
Una volta aggiunto il repository, aggiorna la cache del repository utilizzando il comando seguente:
apt-get update -y
Quindi, installa le dipendenze richieste usando il seguente comando:
apt-get install python3 salt-common -y
Quindi, installa SaltStack master con il seguente comando:
apt-get install salt-master -y
Dopo aver completato l'installazione, puoi procedere al passaggio successivo.
Configura Saltstack Master
Successivamente, dovrai definire l'interfaccia di collegamento nel file di configurazione di SaltSTack.
nano /etc/salt/master
Modifica la seguente riga:
interface: 0.0.0.0
Salvare e chiudere il file, quindi riavviare SaltStack master con il seguente comando:
systemctl restart salt-master
Ora puoi verificare lo stato del SaltStack con il seguente comando:
systemctl status salt-master
Otterrai il seguente output:
? 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.
 Una volta terminato, puoi procedere al passaggio successivo.
Installa e configura Saltstack Minion
A questo punto SaltStack Master è installato e configurato. Ora, accedi a un'altra macchina e aggiungi il repository SaltStack Minion con il seguente comando:
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
Una volta aggiunto il repository, aggiorna la cache del repository utilizzando il comando seguente:
apt-get update -y
Quindi, installa SaltStack Minion con il seguente comando:
apt-get install salt-minion -y
Al termine dell'installazione, modifica il file di configurazione di SaltStack Minion e definisci l'indirizzo IP principale.
nano /etc/salt/minion
Modifica la seguente riga:
master: salt-master-ip
Salva e chiudi il file quando hai finito.
Successivamente, dovrai autenticare i minion utilizzando l'impronta digitale pubblica del maestro.
Sulla macchina Salt Master, elenca tutte le impronte digitali usando il seguente comando:
salt-key --finger-all
Otterrai il seguente output:
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
Ora copia la riga dell'impronta digitale master.pub e aggiungila al file di configurazione di Minion.
Sulla macchina Minion, modifica il file di configurazione:
nano /etc/salt/minion
Aggiungi l'impronta digitale principale come mostrato di seguito:
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'
Dovrai anche definire il nome del Minion:
id: Minion1
Salva e chiudi il file, quindi riavvia SaltStack Minion utilizzando il seguente comando:
systemctl restart salt-minion
Puoi anche verificare lo stato di SaltStack Minion con il seguente comando:
systemctl status salt-minion
Otterrai il seguente output:
? 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.
 Puoi anche controllare l'impronta digitale del minion usando il seguente comando:
salt-call key.finger --local
Otterrai il seguente output:
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
 Sulla macchina SaltStack Master, abbina l'impronta digitale utilizzando il seguente comando:
salt-key --finger-all
Otterrai il seguente output:
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
Sul SaltStack Master, accetta il Minion usando il seguente comando:
salt-key -a Minion1
Otterrai il seguente output:
The following keys are going to be accepted: Unaccepted Keys: Minion1 Proceed? [n/Y] Y Key for minion Minion1 accepted.
Ora verifica la connessione tra Master e Minion usando il seguente comando:
salt Minion1 test.ping
Otterrai il seguente output:
Minion1:
    True
 Una volta terminato, puoi procedere al passaggio successivo.
Controlla i servitori dal maestro
Dopo la riuscita connessione tra Master e Minion. Iniziamo ad eseguire alcuni comandi sui Minion.
Esegui il comando seguente per elencare lo spazio su disco disponibile su Minion:
salt '*' disk.usage
Otterrai il seguente output:
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
 Per installare il pacchetto Apache su Minion, esegui il seguente comando:
salt Minion1 pkg.install apache2
Otterrai il seguente output:
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:
 Per controllare la memoria libera sul Minion, esegui il seguente comando:
salt '*' cmd.run 'free -m'
Otterrai il seguente output:
Minion1:
                   total        used        free      shared  buff/cache   available
    Mem:            1982         140        1392           2         450        1691
    Swap:              0           0           0
 Utilizza il file Salt State per gestire i minion
I file di stato sono anche noti come file di gestione della configurazione utilizzati per configurare e gestire i Minion.
Per creare un file di stato, dovrai creare la base dell'ambiente per SaltStack.
mkdir /src/salt
Quindi, crea un file di stato con il seguente comando:
nano /src/salt/setup.sls
Aggiungi il seguente codice per installare il pacchetto PHP, UNZIP e Apache su Minions:
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
 Salva e chiudi il file, quindi applica la configurazione a tutti i Minion utilizzando il seguente comando:
salt '*' state.apply setup
Otterrai il seguente output:
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
 Conclusione
Congratulazioni! hai installato e configurato con successo SaltStack Master e Minion sul server Debian 11. Abbiamo anche spiegato come gestire i Minion usando i file di stato e la riga di comando. Spero che questo ti aiuterà ad automatizzare e gestire la tua infrastruttura dalla posizione centrale. Sentiti libero di chiedermi se hai domande.