2017-01-20 9 views
1

Ich habe 3 Server A, B, C. Wenn ich die unten in j2 Vorlage leite, zieht es alle 3 Server.Ansible jinja2 Filter ipaddress

Wie kann ich den Server ignorieren, auf dem die Vorlage ausgeführt wird?

{% for host in groups['servers'] | difference([inventory_hostname]) %} 

Antwort

2

ausschließen inventory_hostname von Ihren Servern Liste holen um zu überprüfen, dass Ihre Loop-Variable nicht der aktuelle Host ist:

+0

Oh, netter! Dies ist eine sehr saubere Lösung! –

+0

Ich ziehe die Server-Liste mit dynamischen Inventar-Skript. Bei Verwendung der Differenz ([inventory_hostname]) wurde keine Änderung in der Liste angezeigt. "retry_join": ["A, B, C"] – John

+0

Klingt seltsam für mich ... debug 'Gruppen ['Server']' und 'inventory_hostname' um zu sehen, ob der aktuelle Host wirklich in der Servergruppe ist. –

0

Sie können versuchen, einen Scheck wie diese:

Für ex, wenn Server A läuft, sollte es nur Server B & C.

"retry_join": [" 
       {% for host in groups['servers']%} 
        {{ hostvars[host]['ansible_ssh_host'] }} 
        {% if not loop.last %}, {% endif %} 
       {% endfor %} 
       "] 
+0

yep :) Kommentar löschen. –

Verwandte Themen