Introduzione
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 una breve spiegazione di ciascun componente:
- Salt Master funge da controller della riga di comando per i suoi minion (servitori). Viene utilizzato per controllare e gestire un certo numero di minion.
- I Salt Minion sono demoni slave che ricevono configurazioni e comandi dal master.
- La formula è file di gestione della configurazione.
- L'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.
Se desideri installare Saltstack su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.
Connessione al Server
Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:
ssh root@IP_DEL_SERVER
Successivamente sarà necessario inserire la password dell'utente root.
Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:
ssh nome_utente@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password del vostro utente.
La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Prerequisiti
- Due server che eseguono Debian 11.
- Una password di root è configurata sul server.
Installare 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 comando seguente:
apt-get install python3 salt-common -y
Quindi, installa il master SaltStack con il seguente comando:
apt-get install salt-master -y
Dopo aver completato l'installazione, è possibile procedere al passaggio successivo.
Configurare 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.
Installare e configurare 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, modificare il file di configurazione di SaltStack Minion e definire 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 comando seguente:
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 comando seguente:
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.
Controllare i Minion dal Master
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 su 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
Usare Salt State File 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.