Débuter avec Salt (Saltstack)

Saltstack est un outil de gestion de configuration de vos systèmes afin de la rendre pour facile à administrer.

Installation

Salt est un outil qui permet d’administrer autant de serveurs que possible en quelques ligne de commande sans aucune limite.
Il vous sera possible d’installer des paquets avec une seule commande, manager différents vhost, gérer vos utilisateurs,… depuis un seul serveur.

En utilisant Salt, nous utiliserons à minima 2 serveurs dont l’un est le master (Parent) et l’autre est un minion (Enfant).
L’installation s’effectue sur les système via les commandes suivantes :

Le minion connaît le master par son nom d’hôte ou son adresse IP afin d’intercepter ces requêtes.
Le master connaît le minion par son nom d’hôte.
Les minions peuvent aussi être identifiés par critère (système d’exploitation, regexp, …).

Adresse IP du master.

Adresse IP du 1er minion.


Configuration

On configure d’abord le minion avec l’adresse IP du master et on redémarre le service :

On configure ensuite l’interface du master avec l’adresse IP du master et on dé-commente la configuration file_roots :

On redémarre le service sur les différents serveurs :

La communication entre master et minion s’effectue à partir de clé md5.
On va donc lister les clés afin d’identifier notre minion puis valider sa clé:

Valider toutes les clés sans préciser le hostname_minion.


Utilisation

Salt est maintenant opérationnel et nous pouvons commencer à l’utiliser via la commande __salt_ :


Commandes utiles

Salt dispose de commandes adaptées à une majeure partie des actions que vous serez amener à effectuer sur vos différents serveurs.
L’avantage est de pouvoir exécuter nos actions sur tous vos serveurs minions en même temps.
Voici une liste non exhaustive de commandes utiles :


Fichier states

Salt est un véritable gestionnaire de configuration dès que l’on commence à définir des fichiers states qui vont être sont l’empreinte de vos serveurs minions.
Ces fichiers localisés dans le dossier /srv/salt/ sont au format YAML.

Par exemple, imaginons un système avec des serveurs minion sur lequel on veut installer Apache puis démarrer ce service :

ID du state.

Déclaration du module pkg.

Fonction installed du module pkg (remplaçable par pkg.installed).

Déclaration du module service.

Fonction running du module service.

Nous testons notre commande afin que les serveurs minion l’interprètent :

Le test indique qu’Apache n’est ni installé ni en service et nous pouvons relancer la commande sans faire de test :

Voici un autre exemple pour remplacer le paquet nano par __vim___ :

On va maintenant combiner nos 2 states apache et vim :

Enfin, nous aurions pu procéder par une mise à jour globale de la configuration de nos minions.
On va donc éditer le fichier principal top.sls situé dans le dossier des __pillars_ :

Cette configuration exécutera le state apache pour tous les minions et le state vim pour tous les minions dont le hostname ou ID commence par minionnew.
La fonction state.highstate va permettre de lire tous les states à appliquer dans /srv/salt/top.sls :


Débuter avec Salt (Saltstack)
Vote