wake-up-neo.net

so führen Sie eine bestimmte Aufgabe auf einem bestimmten Host aus

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? 

15
Prem Sompura

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']
31
udondan

Danke, das hilft mir auch.

hosts-Datei:

[production]
Host1.dns.name

[internal]
Host2.dns.name

datei "Requirements.yml":

- 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
2
Albert