Exécution de commandes#
Ciblage#
Ciblage - possibilités#
minion_id
globs
regexp
listes
grains (ex. par OS, par famille de CPU, etc.)
pillars
nodegroups
subnet
range
Ciblage#
master> salt '*' test.ping
master> salt 'web*' grains.items
master> salt 'windows.example.org' sys.doc
master> salt '*.example.org' pkg.install vim
Ciblage - minion_id
#
Le minion_id
est généré à partir du FQDN (Fully Qualified Domain
Name)
globbing : utilisation de wildcards (cf.
fnmatch
en python)
master> salt '*' test.ping
master> salt \* test.ping
master> salt \*.example.org test.ping
master> salt 'db?.example.org' test.ping
master> salt 'db[1-5].example.org' test.ping
master> salt 'db[1,3].example.org' test.ping
regexp : en utilisant
-E
(compatibles Perl)
master> salt -E 'web1-(prod|devel)' test.ping
listes : en utilisant
-L
master> salt -L 'web1,web2,web3' test.ping
Ciblage - grains#
Utiliser
-G
utilisation du
:
pour explorer les dictionnaires :'key:subkey:value'
{'key': {'subkey': 'value'}}
master> salt -G 'os:Debian' test.ping
master> salt -G 'gpus:vendor:ati' test.ping
master> salt -G "ip_interfaces:eth0:192.168.1.*" test.ping
Ciblage - pillars#
Utiliser
-I
Sous la forme de
key:value
master> salt -I 'role:mailserver' test.ping
master> salt -I 'role:db_psql' test.ping
master> salt -I 'role:db_*' test.ping
Ciblage - subnets#
Utilisation de la notation CIDR ou des adresses IP avec
-R
master> salt -S '172.17.1.0/24' test.ping
master> salt -S '172.17.1.1' test.ping
Ciblage - Compound matchers#
Combinaison de règles grains/regex/listes/pillars/subnet/range
salt -C 'web* and G@os:Debian or E@web.*' test.ping
salt -C 'not G@kernel:Darwin' test.ping
Ciblage - nodegroups#
La définition des groupes est statique côté master
utiliser
-N
définis dans
/etc/salt/master
nodegroups:
web: 'apache*.example.org'
db: 'psql*.example.org and mysql*.example.org'
supervision: 'L@shinken.example.org,\
munin.example.org,graphite.example.org'
debian: 'G@os:Debian'
master> salt -N db test.ping
Ciblage - batch size#
Permet de limiter le nombre de minions qui exécutent la commande simultanément.
-b
ou--batch-size
par exemple quand un grand nombre de VMs sont sur le même hôte, cela permet de répartir la charge chronologiquement.
Les « batchs » ne sont pas aléatoires.
master> salt '*' -b 10 test.ping
master> salt '*' -b 25% test.ping
Ciblage - subset#
Permet d’éxecuter une fonction sur un sous-ensemble des minions (à partir de la liste des minions pouvant répondre à l’execution)
--subset
utilise un chiffre entierl’argument est le nombre de minions. Attention: cette commande pose d’abord la question sys.list_functions à tous les minions, attend leur réponse puis choisit au sein de cet ensemble, par exemple avec
--subset=1
la commande parait particulièrement lente.
master> salt --subset=10 '*' test.ping
Ciblage - asynchrone#
--async
: lancer la commande sans attendre le retourAffiche le
jid
du job lancé par défautOn peut récupérer ensuite les résultats de l’exécution en utilisant le runner
jobs