Installer un serveur Salt Master via un Salt Minion Masterless

Sommaire

L'objectif est de déployer notre serveur Salt de manière industrielle et qu'il soit ensuite auto géré via la formule salt-formula.

Cet article part du principe que vous connaissez les fondamentaux de Salt : https://docs.saltproject.io/en/getstarted/index.html

Prérequis

Procédure manuelle

  1. Installez Salt Minion sur le système

    1mkdir /etc/apt/keyrings
    2
    3sudo curl -fsSL -o /etc/apt/keyrings/salt-archive-keyring-2023.gpg https://repo.saltproject.io/salt/py3/debian/12/amd64/SALT-PROJECT-GPG-PUBKEY-2023.gpg
    4
    5echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.gpg arch=amd64] https://repo.saltproject.io/salt/py3/debian/12/amd64/latest bookworm main" | sudo tee /etc/apt/sources.list.d/salt.list
    6
    7sudo apt-get install -y salt-minion
    
  2. Configurez le Salt Minion pour qu'il fonctionne en mode Masterless

    1sudo sed -i 's/\#file_client: remote/file_client: local/g' /etc/salt/minion
    2sudo service salt-minion restart
    
  3. Créez les répertoires des states et pillars Salt

    1sudo mkdir -p /srv/salt /srv/pillar
    2sudo chmod 755 /srv/salt
    3sudo chmod 750 /srv/pillar
    
  4. Clonez le dépôt de la formule salt-formula

    1cd /srv/salt
    2sudo git clone https://github.com/saltstack-formulas/salt-formula.git
    3sudo mv /srv/salt/salt-formula/salt /srv/salt/
    4sudo rm -rf /srv/salt/salt-formula
    
  5. Configurer le fichier top.sls des states

    1echo "base:
    2  '*':
    3    - salt.master
    4    - salt.formulas
    5" | sudo tee /srv/salt/top.sls
    
  6. Configurer les pillars pour configurer le serveur Salt Master

    1sudo rm -f /srv/pillar/salt.sls
    2sudo curl -o /srv/pillar/salt.sls -s -O https://gitlab.com/kartzone/kartzone-demo/-/raw/main/salt.sls
    3echo "base:
    4  '*':
    5    - salt
    6" | sudo tee /srv/pillar/top.sls
    
  7. Préparer les pillars pour le futur serveur Salt Master

    1sudo rm -rf /srv/salt/pillar
    2sudo mkdir -p /srv/salt/pillar
    3sudo git clone https://gitlab.com/kartzone/kartzone-demo.git /srv/salt/pillar/
    
  8. Configurez votre serveur Salt Master

    1sudo salt-call state.apply
    
  9. Nettoyez le Salt Minion Masterless

    1sudo rm -rf /srv/salt/salt /srv/pillar
    2sudo mv /srv/salt/top.sls /srv/salt/states/
    3sudo mkdir -p /etc/salt/gpgkeys /srv/salt/states/win
    4sudo chown -R salt /etc/salt /var/cache/salt /var/log/salt /var/run/salt /srv/salt/states/win
    5sudo chmod 755 /srv/salt/states
    6sudo chmod 750 /srv/salt/pillar
    
  10. Synchronisez le dépôt winrepo-ng

    1sudo salt-run winrepo.update_git_repos
    
  11. Autoriser la clef du salt-minion du serveur Salt

    1sudo salt-key --accept-all --yes
    
  12. Configurez le Salt Minion pour qu'il pointe sur le serveur Salt local

    1sudo sed -i 's/file_client:\ local/#file_client:\ remote/g' /etc/salt/minion
    2sudo service salt-minion restart
    
  13. Vérifier que le serveur Salt utilise les états Salt pour le configurer

    1sudo salt-call state.show_top
    

Procédure industrialisée

Vous trouverez un script regroupant toutes les étapes listées ci-dessus, ici : https://gitlab.com/kartzone/kartzone-demo/-/blob/main/install-salt-master-with-minion-masterless.sh

1cd ~/
2wget https://gitlab.com/kartzone/kartzone-demo/-/raw/main/install-salt-master-with-minion-masterless.sh
3chmod +x install-salt-master-with-minion-masterless.sh
4sudo ./install-salt-master-with-minion-masterless.sh

Annexes