La plupart de mes emplacements ont 4+ sources DNS, mais quelques-unes en ont moins. Chaque emplacement obtient leur propre variable de liste dns4_ips
comme ceci:Obtenir les premiers éléments "N" d'une liste dans le modèle Jinja2 dans Ansible
dns4_ips:
- dns_A
- dns_B
- dns_C
- dns_C
Mon modèle resolv.conf ressemble à ceci:
domain example.com
search example.com dom2.example.com dom3.example.com
{% for nameserver in (dns4_ips|shuffle(seed=inventory_hostname)) %}
nameserver {{nameserver}}
{% endfor %}
La boucle Jinja for
fonctionne très bien, mais dans les cas où j'ai de nombreux serveurs de noms Je préfère ne citer que les 3 premiers que le shuffle()
renvoie.
Je pensais à ceci:
nameserver {{ (dns4_ips|shuffle(seed=inventory_hostname))[0] }}
nameserver {{ (dns4_ips|shuffle(seed=inventory_hostname))[1] }}
nameserver {{ (dns4_ips|shuffle(seed=inventory_hostname))[2] }}
... mais il y a des cas où je n'ai un ou deux serveurs DNS disponibles afin que ceux produirait soit une ligne incorrecte ou une erreur, non?
Existe-t-il un moyen propre de gérer cela avec la boucle for, ou dois-je envelopper les trois lignes de serveur de noms dans {% if (dns4_ips|shuffle(seed=inventory_hostname))[1] is defined %}
?
* Doh * C'était, merci! –