2015-05-29 7 views
13

Ich habe mehrere Aufgaben in einer Rolle wie folgt. Ich möchte keine weitere yml Datei erstellen, um diese Aufgabe zu bearbeiten. Ich habe bereits einen Include für die Webserver, aber einige unserer Perl-Server erfordern die Installation einiger Web-Pakete.Ausführen einer Ansible-Aufgabe nur, wenn der Hostname eine Zeichenfolge enthält

- name: Install Perl Modules 
    command: <command> 
    with_dict: perl_modules 

- name: Install PHP Modules 
    command: <command> 
    with_dict: php_modules 
    when: <Install php modules only if hostname contains the word "batch"> 

Host-Bestandsdatei

[webs] 
web01 
web02 
web03 

[perl] 
perl01 
perl02 
perl03 
perl-batch01 
perl-batch02 

Antwort

29

Unter den Trick tun sollten:

- name: Install PHP Modules 
    command: <command> 
    with_dict: php_modules 
    when: "'batch' in inventory_hostname" 

Hinweis Sie ein paar haben der Rechner während des Playbook laufen übersprungen.

inventory_hostname ein von ansible der "magischen" Variablen:

Zusätzlich inventory_hostname der Name des Hostnamen als in ansible Inventar Host-Datei konfiguriert ist. Dies kann für nützlich sein, wenn Sie sich nicht auf den erkannten Hostnamen ansible_hostname oder auf andere mysteriöse Gründe verlassen wollen. Wenn Sie einen langen FQDN haben, enthält Inventory_hostname_short auch den Teil bis zum ersten Zeitraum, ohne den Rest der Domäne.

Quelle: Ansible Docs - Magic variables and how to access information about other hosts

Verwandte Themen