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