web-dev-qa-db-fra.com

Comment faire en sorte qu'Ansible exécute une certaine tâche uniquement sur un hôte?

Le playbook ressemble à:

- hosts: all
  tasks:
    - name: "run on all hosts,1"
      Shell: something1
    - name: "run on all hosts,2"
      Shell: something2
    - name: "run on one Host, any Host would do"
      Shell: this_command_should_run_on_one_Host
    - name: "run on all hosts,3"
      Shell: something3

Je sais avec l'option de ligne de commande --limit, Je peux limiter à un hôte, est-il possible de le faire dans le playbook?

12

Pour tout (avec les valeurs par défaut, il correspondra au premier de la liste) Hôte:

- name: "run on first found Host"
  Shell: this_command_should_run_on_one_Host
  run_once: true

Pour un hôte spécifique:

- name: "run on that_one_Host host"
  Shell: this_command_should_run_on_one_Host
  when: ansible_hostname == ‘that_one_Host’

Ou inventory_hostname (nom d'hôte tel que défini dans l'inventaire Ansible) au lieu de ansible_hostname (nom d'hôte tel que défini sur la machine cible), selon le nom que vous souhaitez utiliser.

19
techraf