Die meisten meiner Standorte haben 4+ DNS-Quellen, aber ein paar haben weniger. Jeder Standort bekommt ihre eigene dns4_ips
Listenvariable wie folgt aus:Erste "N" Elemente einer Liste in Jinja2 Vorlage in Ansible
dns4_ips:
- dns_A
- dns_B
- dns_C
- dns_C
Meine resolv.conf Template wie folgt aussieht:
domain example.com
search example.com dom2.example.com dom3.example.com
{% for nameserver in (dns4_ips|shuffle(seed=inventory_hostname)) %}
nameserver {{nameserver}}
{% endfor %}
Die Jinja for
Schleife funktioniert gut, aber in den Fällen, in denen ich zahlreiche Nameserver Ich würde eher nur die ersten 3 auflisten, die die shuffle()
zurückgibt.
Ich dachte an diese:
nameserver {{ (dns4_ips|shuffle(seed=inventory_hostname))[0] }}
nameserver {{ (dns4_ips|shuffle(seed=inventory_hostname))[1] }}
nameserver {{ (dns4_ips|shuffle(seed=inventory_hostname))[2] }}
... aber es gibt einige Fälle, in denen ich zur Verfügung ein oder zwei DNS-Server haben nur so entweder eine falsche Zeile oder einen Fehler diejenigen erzeugen würde, nicht wahr?
Gibt es einen sauberen Weg, um dies mit der for-Schleife zu behandeln, oder muss ich die drei Nameserver-Zeilen in {% if (dns4_ips|shuffle(seed=inventory_hostname))[1] is defined %}
wickeln?
* Doh * Das war es, Dank! –