Ricerca nel sito web

Come configurare SaltStack Master e Minion su Rocky Linux


Su questa pagina

  1. Prerequisiti
  2. Impostazione del file /etc/hosts
  3. Aggiunta del repository SaltStack
  4. Installazione di SaltStack Master
  5. Installazione di SaltStack Minion
  6. Aggiunta di server Minion a SaltStack Master
  7. Esecuzione di comandi arbitrari con SaltStack
  8. Installazione di LEMP Stack con SaltStack State
  9. Conclusione

Salt o Saltstack è un framework di automazione IT open source che consente agli amministratori di eseguire comandi in remoto direttamente su più macchine. Salt è principalmente scritto in Python e progettato con l'architettura Master e Minion. SaltStack master è il controller centrale della gestione della configurazione di Salt e i Minion sono server gestiti da SaltStack Master, oppure hai nominato i minion come server di destinazione.

Il master SaltStack è in esecuzione su sistema operativo Linux per impostazione predefinita, ma i minion possono essere qualsiasi sistema operativo. Saltstack è una gestione della configurazione rivoluzionaria per la distribuzione dell'automazione, l'esecuzione di attività remote e l'infrastruttura come codice. SaltStack può anche essere utilizzato per eseguire il provisioning di più server di infrastruttura, inclusi server fisici e virtuali e anche il cloud.

Seguendo questa guida, installerai SaltStack Master e Minion sui server Rocky Linux. Inoltre, imparerai come usare Salt per eseguire comandi arbitrari da SaltStack Master contro Salt Minions. E alla fine imparerai anche come creare uno stato Salt per l'installazione dello stack LEMP di base (Linux, Nginx, MariaDB e PHP-FPM).

Prerequisiti

Se completi questo tutorial, avrai bisogno di almeno due o più server Rocky Linux. Tutti questi server dovrebbero avere un utente non root con privilegi di root/amministratore.

Configurazione del file /etc/hosts

Per questo esempio, utilizzeremo tre server Rocky Linux per l'installazione di SaltStack. Un server verrà utilizzato come Master e due server verranno utilizzati come servitori.

Di seguito sono riportati i server Rocky Linux dettagliati che utilizzeremo:

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

Prima di installare i pacchetti SaltStack, configurerai il file /etc/hosts su ogni host Linux.

Modifica il file /etc/hosts utilizzando il seguente comando.

sudo nano /etc/hosts

Ora aggiungi la seguente configurazione al file.

master 192.168.5.10
minion1 192.168.5.15
minion2 192.168.5.16

Quando hai finito, salva e chiudi il file.

Aggiunta del repository SaltStack

I pacchetti SaltStack sono disponibili sul suo repository ufficiale. Aggiungerai il repository SaltStack e la chiave GPG a tutti i tuoi server Rocky Linux.

Eseguire il seguente comando per importare la chiave GPG per il repository SaltStack. Quindi, aggiungi il repository SaltStack. In questo esempio, aggiungerai l'ultima versione del repository SaltStack.

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

Ora esegui il seguente comando per controllare e verificare l'elenco dei repository sul tuo server Rocky Linux. Quindi, aggiorna e genera nuovi metadati per tutti i repository disponibili.

Dovresti vedere che il repository SaltStack è stato aggiunto al server Rocky Linux.

sudo dnf repolist
sudo dnf makecache

Installazione di SaltStack Master

Hai aggiunto il repository SaltStack a tutti i tuoi server Rocky Linux. Ora installerai e configurerai SaltStack Master sul server \master\.

Innanzitutto, esegui il comando DNF qui sotto per installare il pacchetto \salt-master\. Questo pacchetto è il pacchetto principale per la configurazione di SaltStack Master.

Immettere Y per confermare l'installazione e premere INVIO e l'installazione avrà inizio.

sudo dnf install salt-master

Al termine dell'installazione, modifica la configurazione di SaltStack Master \/etc/salt/master\ utilizzando il comando seguente.

sudo nano /etc/salt/master

Decommenta l'opzione \interface:\ e cambia l'indirizzo IP con il tuo indirizzo IP del server \master\. In questo esempio, l'indirizzo IP di SaltStack Master è \192.168.5.10\.

interface: 192.168.5.10

Salva e chiudi il file quando hai finito.

Successivamente, abilita il servizio \salt-master\ per l'esecuzione all'avvio del sistema e avvia il servizio \salt-master\. Quindi, controlla e verifica il servizio \salt-master\.

Dovresti vedere che il servizio \salt-master\ è abilitato e in esecuzione.

sudo systemctl enable salt-master && sudo systemctl start salt-master
sudo systemctl status salt-master

Sul SaltStack Master, dovrai aprire le porte TCP 4505 e 4506, che verranno utilizzate dalla connessione SaltStack Minions al SaltStack Master.

Esegui il comando \firewall-cmd\ seguente per aprire le porte 4505 e 4506. Quindi, ricarica Firewalld.

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

Infine, controlla e verifica le regole di Firewalld usando il seguente comando. E dovresti avere le porte 4505 e 4506 disponibili sul Firewalld.

sudo firewall-cmd --list-all

Installazione di SaltStack Minion

Hai installato e configurato SaltStack Master. Ora installerai e configurerai SaltStack Minion su entrambi i server \minion1\ e \minion2\.

Sposta i server \minion1\ e minion2\, quindi esegui il comando DNF di seguito per installare il pacchetto \salt-minion\. Questo pacchetto deve essere installato su tutti gli host SaltStack Minion.

Immettere Y per confermare l'installazione e premere INVIO. E inizierà l'installazione di \salt-minion\.

sudo dnf install salt-minion

Al termine dell'installazione, modifica il file di configurazione di SaltStack Minion \/etc/salt/minion\ utilizzando il comando seguente.

sudo nano /etc/salt/minion

Rimuovere il commento dall'opzione \master:\ e aggiungere l'indirizzo IP o il nome host SaltStack Master. In questo esempio, il master SaltStack è in esecuzione sull'indirizzo IP del server \192.168.5.10\.

master: 192.168.5.10

Salva e chiudi il file quando hai finito.

Successivamente, esegui il seguente comando per abilitare il servizio \salt-minion\ e avvia il servizio. Quindi, controlla e verifica il servizio \salt-minion\.

Dovresti vedere che il servizio \salt-minion\ è abilitato e verrà eseguito automaticamente all'avvio del sistema. E lo stato attuale del servizio \salt-minion\ è in esecuzione.

sudo systemctl enable salt-minion && sudo systemctl start salt-minion
sudo systemctl status salt-minion

Aggiunta di server Minion a SaltStack Master

Ora hai terminato l'installazione di SaltStack Master sul server \master\ e di SaltStack Minion sui server \minion1\ e \minion2\. Per aggiungere SaltStack Minions al SaltStack Master, accetterai l'impronta digitale della chiave di entrambi i server \minion1\ e \minion2\ dal server \master\.

Torna al server \master\ ed esegui il comando salt qui sotto per controllare tutte le impronte digitali delle chiavi disponibili. Dovresti vedere che ci sono due \Chiavi non accettate\ dai server \minion1\ e \minion2\.

salt-key --finger-all

Per accettare l'impronta digitale della chiave del server \minion1\ e \minion2\, eseguire il comando salt-key di seguito. E ti verrà chiesto di accettare l'impronta digitale della chiave, inserisci Y per confermare e aggiungere la chiave.

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

Quindi, controlla e verifica tutte le impronte digitali delle chiavi disponibili utilizzando il comando seguente. E dovresti ottenere entrambe le chiavi delle impronte digitali del server \minion1\ e \minion2\ aggiunte al master SaltStack. Entrambe le impronte digitali delle chiavi sono disponibili nella sezione \Chiavi accettate\.

salt-key --finger-all

Dopo aver aggiunto i server SaltStack Minion a SaltStack Master, eseguire il seguente comando salt sul server \master\ per testare e eseguire il ping dei server \minion1\ e \minion2\.

Se la configurazione ha esito positivo, dovresti visualizzare il messaggio di output \True\, che significa che i server SaltStack Minion sono stati aggiunti a SaltStack Master.

salt minion1 test.ping
salt minion2 test.ping

Puoi anche utilizzare un asterisco * per scegliere come target tutti i server SaltStack Minion.

salt '*' test.ping

Puoi anche controllare la versione corrente di SaltStack installata su entrambi i server \minion1\ e \minion2\ utilizzando il comando seguente.

Al momento della stesura di questo documento, l'ultima versione del software SaltStack è la v3004.2, installata su tutti i server SaltStack.

salt '*' test.version

Esecuzione di comandi arbitrari con SaltStack

Saltstack ti consente di eseguire comandi arbitrari dal server principale a tutti i server minion. Per fare ciò, dovrai utilizzare un modulo di esecuzione fornito da Saltstack.

Eseguire il comando salt di seguito dal server principale. Questo eseguirà il comando uname -a su tutti i server minion, e questo comando viene eseguito attraverso il modulo cmd.

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

Come puoi vedere nello screenshot seguente, ogni server minion restituisce l'output del comando uname -a.

Un altro esempio è dove puoi utilizzare il modulo pkg per gestire l'installazione dei pacchetti, il repository e tutto ciò che riguarda la gestione dei pacchetti. Questo supporta più distribuzioni Linux, incluse distribuzioni basate su RHEL come CentOS e Rocky Linux, e anche sistemi basati su Debian come Ubuntu.

Aggiorna i repository disponibili su tutti i server minion.

salt '*' pkg.refresh_db

Controlla il pacchetto bash usando il comando salt di seguito.

salt '*' pkg.show bash

Installa il pacchetto chiamato chrony su tutti i server minion.

salt '*' pkg.install chrony

Controlla l'elenco dei repository su tutti i servitori del server.

salt '*' pkg.list_repos

Controlla l'elenco degli aggiornamenti dei pacchetti disponibili su tutti i server minion.

salt '*' pkg.list_upgrades

Un altro ottimo esempio qui è il modulo di servizio che ti consente di gestire i servizi su più distribuzioni Linux, inclusa la distribuzione con systemd.

Controlla se il servizio chronyd è disponibile o meno.

salt '*' service.available chronyd

Abilita l'avvio del servizio chronyd all'avvio del sistema su tutti i server minion.

salt '*' service.enabled chronyd

Controllo dell'elenco dei servizi in esecuzione su tutti i server.

salt '*' service.get_running

Controlla il comando ExecStart= per ogni servizio disponibile su tutti i server.

salt '*' service.execs

Installazione di LEMP Stack con SaltStack State

Hai imparato il comando salt di base per eseguire un comando arbitrario su tutti i server SaltStack Minion. Ora creerai un nuovo file di stato SaltStack per l'installazione dello stack LEMP di base (Linux, Nginx, MariaDB e PHP-FPM). Qui è dove puoi utilizzare SaltStack come gestione della configurazione per la tua infrastruttura server e distribuzioni automatiche delle applicazioni.

Il repository Rocky Linux fornisce più versioni di pacchetti Nginx, MariaDB e PHP-FPM. Per installare l'ultima versione di questi pacchetti, dovrai abilitarla tramite il modulo del gestore pacchetti DNF.

Al momento della stesura di questo documento, non esiste un modello SaltStack equivalente al comando \dnf module\ per la distribuzione basata su RHEL. Quindi, abiliterai il modulo manualmente tramite il comando arbitrario SaltStack.

Eseguire il comando seguente per abilitare il modulo per Nginx v1.20, MariaDB v10.5 e i pacchetti PHP v8.0.

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'

Ora crea una nuova directory di gestione della configurazione centrale \/srv/salt/lemp\ e crea un nuovo file \init.sls\ utilizzando il comando seguente.

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

Aggiungere la seguente configurazione al file. In questo esempio, creeremo lo stato Salt denominato \lemp\ per l'installazione dei pacchetti LEMP Stack. Inoltre, garantiremo che tutti i servizi LEMP Stack (Nginx, MariaDB e PHP-FPM) siano abilitati e in esecuzione su tutti i server SaltStack Minion.

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

Quando hai finito, salva e chiudi il file.

Ora per verificare la configurazione dello stato Salt, utilizzare il comando salt di seguito. Questo comando testerà e verificherà la configurazione dello stato Salt rispetto ai server SaltStack Minion.

sudo salt * state.show_sls lemp

Per applicare lo stato Salt a tutti i server SaltStack Minion, puoi utilizzare il comando salt di seguito. Ora LEMP Stack verrà installato automaticamente sui server \minion1\ e \minion2\.

sudo salt '*' state.apply lemp

Nello screenshot seguente, puoi vedere che LEMP Stack è installato su entrambi i server \minion1\ e \minion2\.

Conclusione

In questo tutorial, hai terminato l'installazione di SaltStack Master e SaltStack Minion sui server Rocky Linux. Hai anche imparato l'uso di base del comando salt per eseguire un comando arbitrario contro SaltStack Minion. Alla fine, hai anche imparato come creare una configurazione dello stato Salt per l'installazione automatica dello stack LEMP e impostare SaltStack come gestione della configurazione per le distribuzioni delle applicazioni.