Installation#

Installation#

Installation#

Certaines distributions proposent des paquets SaltStack dans leurs entrepôts. Pour Debian par exemple, un simple apt install salt-master ou apt install salt-minion est suffisant.

SaltStack met à disposition des entrepôts de paquets pour plusieurs distributions, ce qui peut permettre d’installer les dernières versions dès leur publication, sans attendre leur intégration dans la distribution utilisée. Pour obtenir la liste, consulter https://repo.saltproject.io/

Configuration initiale#

Le principal fichier de configuration du master est /etc/salt/master. Il permet de configurer p.ex. la racine des fichiers (file_roots, par défaut /srv/salt) et où trouver les pillars (pillar_roots).

Si file_roots détermine où pointe salt:// ; p.ex., par défaut, salt://states/vim/.vimrc pointe vers le fichier .vimrc dans /srv/salt/states/vim/.vimrc.

Le principal fichier de configuration d’un minion est /etc/salt/minion. L’entrée la plus importante de ce fichier est la clé master, qui indique au minion son master. Cette valeur peut soit être un FQDN ou une adresse IP.

Le fichier /etc/salt/minion_id peut être utilisé pour changer l’identifiant du minion qui est par défaut le nom de l’hôte. Ce fichier ne contient que le nouvel identifiant.

Initaliser la connexion entre le master et les minions#

Pour initialiser la connexion entre le master et ses minions, il faut que les minions s’authentifient auprès du master :

  1. chaque minion génère une pair de clés

  2. il soumet la clé publique au master

  3. le master accepte, rejette ou supprime la clé avec la commande salt-key

  4. si le master accepte la clé, une communication chiffrée est établie entre ces deux machines

Les clés publiques des minions sont stockées dans /etc/salt/pki/master/minions sur le master. La clé publique du master est stockée dans /etc/salt/pki/minion/minion_master.pub sur chaque minion.

../../_images/salt-key.png

salt-key#

Lister toutes les clés :

salt-key

Accepter la clé d’un minion :

salt-key -a <minion_id>

Accepter toutes les clés :

salt-key -A

Supprimer la clé d’un minion :

salt-key -d <minion_id>

Supprimer toutes les clés :

salt-key -D

Pour vérifier les empreintes digitales :

  1. afficher l’empreinte sur le minion : salt-call --local key.finger

  2. comparer avec l’empreinte de la clé reçue par le master : salt-key -f <minion_id>

Si un Salt roster a été mis en place, la commande

salt-run manage.safe_accept <minion_id>

permet de rajouter un minion en intégrant la vérification de l’empreinte digitale.

Avertissement

Si l’identifiant d’un minion a été changé, il va soumettre une nouvelle clé auprès du master qu’il faut accepter pour rétablir la connexion.

Il est aussi possible de configurer le master d’accepter toutes les clés :

auto_accept: True

Inversement, il est possible de permettre aux minions de se connecter à un master même si la clé publique de ce dernier a changé :

open_mode: True

Droits et permissions#

salt-master et salt-minion sont souvent exécutés en tant que root. Ceci n’est pas indispensable, cependant

  • des fichiers sont par défaut écrits dans /var/salt/,

  • la clef privée du master doit être très bien protégée,

  • salt-minion lance souvent des commandes système

Il faudrait donc des configurations supplémentaires (adapter les permissions, permettre au salt-minion d’utiliser sudo, …) pour qu’ils puissent fonctionner correctement.

Compatibilités entre versions#

Lors des mises à jour, il est fortement recommandé de mettre à jour le master en premier, comme SaltStack ne garantit pas de compatibilité entre des minions et un master si ce dernier exécute une version antérieure à celle des minions.

Pour l’inverse, c’est-à-dire le cas où la version du master est plus récente que celle des minions, SaltStack essaie de conserver une compatibilité. Seulement en cas de mises à jour de sécurité cette compatiblité peut-être rompue.

D’une manière générale, il est conseillé d’avoir un parc de versions de Salt aussi petit que possible, et idéalement, une seule version déployée.

salt '*' grains.item saltversion
salt '*' pkg.version salt-minion

Multi-système#

Généralités#

  • salt-minion est géré sur de nombreux systèmes

  • salt-master n’est géré que sur les systèmes Unix

Distributions Unix#

  • Arch Linux : yaourt salt

  • Debian : apt search salt-

  • Fedora : repos officiels + EPEL

  • FreeBSD : FreeBSD ports tree

  • Gentoo : emerge app-admin/salt

  • RHEL / CentOS : EPEL

  • Solaris : OpenCSW package repository

  • Ubuntu : dépots officiels

  • SUSE : zypper install salt-minion

Windows#

  • Installeur Windows

  • L’installeur demande le nom du master et le nom du minion

  • L’installeur est scriptable

  • salt windows-vm sys.list_functions est trompeur, certaines fonctions ne marchent pas

  • Windows Powershell permet une gestion d’installation ou autres commandes

  • Fonctionnalité de dépots de logiciels Windows exploitable par salt avec salt-winrepo

  • Fonctionnalité étendue de gestion de logiciels avec chocolatey

Mac OS X#

  • utilisation de homebrew (système de gestion de paquets pour Mac OS) :

brew install saltstack