Salt (ou SaltStack, ou SaltProject) est à la fois un outil d'exécution à distance, un outil de gestion de configuration et un bus d'événements : un master parle à des centaines de minions en quelques dizaines de millisecondes, leur applique un état voulu, et réagit à ce qui se passe sur eux. Dans ce cours, vous le découvrez en pratique sur des conteneurs Docker jetables plutôt que sur de vrais serveurs : rien à louer, rien à casser.
Le fil conducteur est une double question que se posent beaucoup d'équipes : Salt peut-il remplacer Puppet pour maintenir un parc, et fait-il de l'orchestration comme Ansible ? Chaque chapitre compare donc Salt aux deux autres, et le dernier donne une réponse argumentée.
Pour qui ?
Ce cours vise un débutant en Salt. Il suppose que vous savez :
- utiliser un terminal bash (se déplacer, lancer une commande, lire une erreur) ;
- lancer et supprimer un conteneur Docker (
docker run,docker exec,docker compose) ; - ce qu'est un paquet, un service et un fichier de configuration sous Linux ;
- lire du YAML.
Il ne suppose aucune connaissance de Salt ni de Python. Si vous connaissez Ansible ou Puppet, le cours fait le parallèle à chaque notion : les correspondances sont presque une à une.
Ce qu'il faut sur votre poste
| Outil | Version | Pourquoi |
|---|---|---|
| bash | macOS, Linux, ou WSL 2 sous Windows | les commandes du cours sont des commandes bash |
| Docker | Docker Engine ou Docker Desktop récent, avec Compose v2 | le master et les minions sont des conteneurs décrits dans un fichier Compose |
curl | n'importe quelle version | tester les pages web produites |
| Mémoire | 1 Go disponible pour Docker | le master Salt est un processus Python, pas une application Java : la pile entière est légère |
Salt lui-même n'est pas à installer sur votre poste : il vit dans les conteneurs. Le premier chapitre vérifie les outils et construit les images.
Comment se déroule le cours
Chaque étape alterne explications, commandes à lancer (bouton ▶) et vérifications : une vérification regarde l'état réel de vos conteneurs et de vos fichiers, pas les commandes que vous avez tapées. Chaque chapitre se termine par un quiz noté qui le valide.
Tous vos fichiers vont dans le dossier atelier/, à la racine de ce dépôt (il est ignoré par
git). Son sous-dossier atelier/salt/ est monté dans le master à l'endroit où Salt attend ses
états, /srv/salt, et atelier/pillar/ sur /srv/pillar : vous éditez sur votre poste, le
master lit dans le conteneur. Les conteneurs que le cours crée s'appellent tous layers-salt…
et écoutent sur des ports entre 28200 et 28299, pour ne jamais se mélanger avec vos projets.
Le parcours
Contrairement à Puppet, Salt se découvre avec son master dès le premier chapitre : c'est le bus master-minions qui fait son identité, et il ne coûte qu'un conteneur de plus.
- Installation et concepts : ce qu'est Salt, ses trois visages, où il en est en 2026, la
pile master et minions, l'échange de clés et le premier
test.ping. - Exécution à distance : lancer des commandes et des modules sur tout le parc, cibler par nom, par grains, par expression composée, et comparer à l'ad hoc d'Ansible.
- Premiers états : un serveur web nginx décrit en trois états, le top file, le highstate,
le mode
test=True, l'idempotence, la dérive et les requisites. - Données et templates : grains, pillar, Jinja dans les états et dans les fichiers, le
motif
map.jinja. - Organiser le code : formulas, environnements,
gitfs, et un WordPress complet sur plusieurs minions. - Orchestration et événementiel : le runner
state.orchestrate, le bus d'événements, les reactors et les beacons, ce qui n'existe ni dans Puppet ni dans Ansible. - Sans master :
salt-call --localetsalt-ssh, et comment choisir. - Outillage, console et bilan : salt-lint, tests, pillar chiffré, salt-api et SaltGUI, puis la matrice Salt / Puppet / Ansible.
Les chapitres 2 à 6 construisent le même projet dans atelier/, sur la même pile :
suivez-les dans l'ordre.