Comment installer Saltstack Master et Minion sur Debian 11

SaltStack est un logiciel d’automatisation et de gestion de la configuration gratuit, open-source et basé sur Python. C’est un outil en ligne de commande qui t’aide à gérer ton infrastructure depuis un emplacement central. SaltStack est constitué de quatre composants. Tu trouveras ci-dessous une brève explication de chaque composant :

  • Salt Master fait office de contrôleur en ligne de commande pour ses sous-fifres. Il est utilisé pour contrôler et gérer un certain nombre de minions.
  • Lesminions Salt sont des démons esclaves qui reçoivent les configurations et les commandes du maître.
  • Laformule est constituée de fichiers de gestion de la configuration.
  • L’exécution est un certain nombre de commandes et de modules qui sont exécutés sur les minions.

Dans cet article, je vais te montrer comment installer les systèmes SaltStack Master et Minion sur Debian 11.

Conditions préalables

  • Deux serveurs fonctionnant sous Debian 11.
  • Un mot de passe root est configuré sur le serveur.

Installer SaltStack Master

Par défaut, SaltStack n’est pas inclus dans le référentiel par défaut de Debian 11. Tu devras donc ajouter le référentiel SaltStack à APT. Tu peux l’ajouter en exécutant la commande suivante :

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

Une fois le référentiel ajouté, mets à jour le cache du référentiel à l’aide de la commande suivante :

apt-get update -y

Ensuite, installe les dépendances requises à l’aide de la commande suivante :

apt-get install python3 salt-common -y

Ensuite, installe le maître SaltStack à l’aide de la commande suivante: :

apt-get install salt-master -y

Une fois l’installation réussie, tu peux passer à l’étape suivante.

Configurer le maître Saltstack

Ensuite, tu devras définir l’interface bind dans le fichier de configuration de SaltSTack.

nano /etc/salt/master

Change la ligne suivante :

interface: 0.0.0.0

Enregistre et ferme le fichier puis redémarre le maître SaltStack avec la commande suivante :

systemctl restart salt-master

Tu peux maintenant vérifier l’état de SaltStack avec la commande suivante :

systemctl status salt-master

Tu obtiendras la sortie suivante :

? 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.

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Installer et configurer SaltStack Minion

À ce stade, SaltStack Master est installé et configuré. Maintenant, connecte-toi à une autre machine et ajoute le référentiel SaltStack Minion avec la commande suivante :

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

Une fois le référentiel ajouté, mets à jour le cache du référentiel à l’aide de la commande suivante :

apt-get update -y

Ensuite, installe le SaltStack Minion avec la commande suivante: :

apt-get install salt-minion -y

Après une installation réussie, modifie le fichier de configuration de SaltStack Minion et définis l’adresse IP maître.

nano /etc/salt/minion

Change la ligne suivante :

master: salt-master-ip

Sauvegarde et ferme le fichier lorsque tu as terminé.

Ensuite, tu devras authentifier les minions à l’aide de l’empreinte publique du maître.

Sur la machine Salt Master, liste toutes les empreintes digitales à l’aide de la commande suivante :

salt-key --finger-all

Tu obtiendras la sortie suivante :

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

Maintenant, copie la ligne master.pub fingerprint et ajoute-la au fichier de configuration de Minion.

Sur la machine Minion, modifie le fichier de configuration :

nano /etc/salt/minion

Ajoute l’empreinte master comme indiqué ci-dessous :

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'

Tu devras aussi définir le nom du Minion :

id: Minion1

Enregistre et ferme le fichier puis redémarre le Minion de SaltStack à l’aide de la commande suivante :

systemctl restart salt-minion

Tu peux également vérifier l’état du SaltStack Minion à l’aide de la commande suivante :

systemctl status salt-minion

Tu obtiendras la sortie suivante :

? 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.

Tu peux aussi vérifier l’empreinte digitale du Minion à l’aide de la commande suivante :

salt-call key.finger --local

Tu obtiendras la sortie suivante :

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

Sur la machine SaltStack Master, fais correspondre l’empreinte digitale à l’aide de la commande suivante :

salt-key --finger-all

Tu obtiendras le résultat suivant :

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

Sur l’ordinateur SaltStack Master, accepte le Minion à l’aide de la commande suivante :

salt-key -a Minion1

Tu obtiendras le résultat suivant :

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

Maintenant, vérifie la connexion entre Master et Minion à l’aide de la commande suivante :

salt Minion1 test.ping

Tu obtiendras le résultat suivant :

Minion1:
    True

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Contrôler les Minions depuis le Maître

Après la connexion réussie entre le Maître et le Minion. Commençons à exécuter quelques commandes sur les Minions.

Exécute la commande suivante pour répertorier l’espace disque disponible sur le Minion :

salt '*' disk.usage

Tu obtiendras la sortie suivante :

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

Pour installer le paquet Apache sur le Minion, exécute la commande suivante :

salt Minion1 pkg.install apache2

Tu obtiendras le résultat suivant :

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:

Pour vérifier la mémoire libre sur le Minion, exécute la commande suivante :

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

Tu obtiendras le résultat suivant :

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

Utiliser le fichier d’état Salt pour gérer les Minions

Les fichiers d’état sont également connus sous le nom de fichiers de gestion de la configuration qui sont utilisés pour configurer et gérer les Minions.

Pour créer un fichier d’état, tu dois créer l’environnement de base pour SaltStack.

mkdir /src/salt

Ensuite, crée un fichier d’état avec la commande suivante :

nano /src/salt/setup.sls

Ajoute le code suivant pour installer le paquet PHP, UNZIP et Apache sur 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

Enregistre et ferme le fichier puis applique la configuration à tous les Minions à l’aide de la commande suivante :

salt '*' state.apply setup

Tu obtiendras le résultat suivant :

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

Conclusion

Félicitations ! Tu as réussi à installer et à configurer SaltStack Master et Minion sur un serveur Debian 11. Nous avons également expliqué comment gérer les Minions à l’aide des fichiers d’état et de la ligne de commande. J’espère que cela t’aidera à automatiser et à gérer ton infrastructure depuis un emplacement central. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...