Salt
Pense-bête
“Pinger” tous les minions accessibles
salt '*' test.ping
Autre variante en utilisant le runner manage
sur le master :
salt-run manage.up
salt-run manage.status
salt-run manage.down
Lister les grains
Lister les grains des minions depuis le master :
salt '*' grains.ls
salt '*' grains.items
Lister les grains locaux depuis un minion :
salt-call -g
Récupérer la valeur d’un grain
salt '*' grains.get ip_interfaces
Il est possible d’utiliser utiliser le caractère “:
” pour accéder à des
sous-éléments de grains imbriqués :
salt '*' grains.get ip_interfaces:eth0
salt '*' grains.get online_net:location:zone
Appliquer tous les states sur les minions depuis le master
salt '*' state.highstate
Pour lancer une simulation des changements induits sans les appliquer
réellement, passer l’option test=True
:
salt '*' state.highstate test=True # dry run
Cibler des minions
En utilisant des grains
salt -G 'raid_type:software' raid.detail /dev/md1
salt -G 'ssd_storage:true' cmd.run 'cat /sys/block/sda/queue/scheduler'
salt -G 'ssd_storage:true' file.write /sys/block/sda/queue/scheduler noop
En utilisant des critères composés
salt -C 'prod-*.example.net and not G@ssd_storage:true' test.ping
En utilisant des rôles
Il est possible d’émuler un système de pseudo rôles en utilisant les grains en créant un grain contenant une liste de rôles, et d’utiliser ces grains pour cibler certains minions.
Dans la configuration des minions, définir des grains tels que :
grains:
roles:
- mta
- ns
- fileserver
Pour cibler les minions disposant d’un rôle spécifique, spécifier le grain
roles
avec la valeur souhaitée :
salt -G 'roles:mta' cmd.run mailq
Il est également possible d’utiliser un ciblage basé sur des critères composés, notamment pour cibler les minions ne disposant pas d’un rôle :
salt -C '* and G@roles:mta' cmd.run mailq
salt -C '* and not G@roles:mta' test.ping
Appliquer un state spécifique
salt '*' state.sls unbound
Appliquer un state ponctuel
salt '*' state.single user.absent name=bob.kelso purge=True
Appliquer tous les states en local depuis un minion
salt-call state.highstate
Vérifier qu’un fichier existe sur les minions
salt '*' file.file_exists /etc/salt/grains
Obtenir de la documentation sur un module
salt-call sys.doc <module>
Rafraîchir les pillars sur les minions
salt '*' saltutil.refresh_pillar
Mettre à jour tous les paquets du système
salt '*' pkg.upgrade dist_upgrade=False
Installer/mettre à jour des paquets spécifiques
salt '*' pkg.install libevent-2.0
salt '*' pkg.install pkgs='["libssl-doc","libssl1.0.0","linux-image-3.2.0-4-amd64"]'
Références
- Documentation complète : http://docs.saltstack.com/en/latest/ref/index.html
- Variables utilisables dans les templates : http://docs.saltstack.com/en/latest/ref/states/vars.html
- Liste des states inclus de base : http://docs.saltstack.com/en/latest/ref/states/all/
- Liste des modules inclus de base : http://docs.saltstack.com/en/latest/ref/modules/all/
- Référence templating Jinja2 : http://jinja.pocoo.org/docs/dev/templates/
- Une cheat sheet : http://www.xenuser.org/saltstack-cheat-sheet/