inhalt meiner Inventardatei -
[webservers]
x.x.x.x ansible_ssh_user=ubuntu
[dbservers]
x.x.x.x ansible_ssh_user=ubuntu
in meiner Tasks-Datei, die eine gemeinsame Rolle spielt, d. h. sie wird auf beiden Hosts ausgeführt. Ich möchte jedoch eine nachfolgende Task auf Host-Webservern ausführen, die nicht in Db-Servern liegen. Diese wird in der Inventardatei definiert
- name: Install required packages
apt: name={{ item }} state=present
with_items:
- '{{ programs }}'
become: yes
tags: programs
ist wann das Modul hilfreich oder gibt es einen anderen Weg? Wie kann ich das machen?
Wenn Sie Ihre Rolle auf allen Hosts ausführen möchten, jedoch nur eine einzige Aufgabe, die auf die Gruppe webservers
beschränkt ist, ist - wie Sie bereits vorgeschlagen haben - when
Ihr Freund.
Sie können eine Bedingung definieren wie:
when: inventory_hostname in groups['webservers']
Danke, das hilft mir auch.
[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