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 entier

  • l’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 retour

  • Affiche le jid du job lancé par défaut

  • On peut récupérer ensuite les résultats de l’exécution en utilisant le runner jobs