BETA
Salt — premiers pas
lab14 h16 étapesdébutant

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

OutilVersionPourquoi
bashmacOS, Linux, ou WSL 2 sous Windowsles commandes du cours sont des commandes bash
DockerDocker Engine ou Docker Desktop récent, avec Compose v2le master et les minions sont des conteneurs décrits dans un fichier Compose
curln'importe quelle versiontester les pages web produites
Mémoire1 Go disponible pour Dockerle 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.

  1. 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.
  2. 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.
  3. 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.
  4. Données et templates : grains, pillar, Jinja dans les états et dans les fichiers, le motif map.jinja.
  5. Organiser le code : formulas, environnements, gitfs, et un WordPress complet sur plusieurs minions.
  6. 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.
  7. Sans master : salt-call --local et salt-ssh, et comment choisir.
  8. 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.

Installation et concepts0/2
Salt en quelques notions
Le master et ses minions
Exécution à distance0/2
Modules et ciblage
Grains, jobs et sorties
Premiers états0/2
Trois états pour un serveur web
Le top file et le highstate
Données et templates0/2
Jinja dans les états, et le pillar
Templates et map.jinja
Formulas et projet WordPress0/2
Formulas, gitfs et extensions
Projet : un WordPress sur trois minions
Orchestration et événementiel0/2
L'orchestration
Le bus d'événements, les reactors et les beacons
Sans master, sans minion0/2
salt-ssh : sans minion
Masterless, planification, et le choix du mode
Outillage, console et bilan0/2
Lint, secrets, API et console
Bilan : Salt face à Puppet et Ansible
0 / 16 étapes0%
Salt — premiers pas — TP · byte_layers