le contenu de mon fichier d'inventaire -
[webservers]
x.x.x.x ansible_ssh_user=ubuntu
[dbservers]
x.x.x.x ansible_ssh_user=ubuntu
dans mon fichier de tâches qui a un rôle commun, c'est-à-dire qu'il s'exécutera sur les deux hôtes, mais je souhaite exécuter une tâche suivante sur les serveurs Web de l'hôte, pas dans les serveurs de base de données définis dans le fichier d'inventaire.
- name: Install required packages
apt: name={{ item }} state=present
with_items:
- '{{ programs }}'
become: yes
tags: programs
le module est-il utile ou existe-t-il d'une autre manière? Comment pourrais-je faire ça?
Si vous souhaitez exécuter votre rôle sur tous les hôtes mais seulement une tâche limitée au groupe webservers
, alors - comme vous l'avez déjà suggéré - when
est votre ami.
Vous pouvez définir une condition comme:
when: inventory_hostname in groups['webservers']
Merci, cela m'aide aussi.
[production]
Host1.dns.name
[internal]
Host2.dns.name
- name: install the sphinx-search rpm from a remote repo on x86_64 - internal Host
when: inventory_hostname in groups['internal']
yum:
name: http://sphinxsearch.com/files/sphinx-2.2.11-1.rhel7.x86_64.rpm
state: present
- name: install the sphinx-search rpm from a remote repo on i386 - Production
when: inventory_hostname in groups['production']
yum:
name: http://sphinxsearch.com/files/sphinx-2.2.11-2.rhel6.i386.rpm
state: present