Variable ändern in Ansible template auf Basis von Gruppe
Habe ich eine Ansible Inventar-Datei, die ein bisschen wie diese:
[es-masters]
host1.my-network.com
[es-slaves]
host2.my-network.com
host3.my-network.com
[es:children]
es-masters
es-slaves
Ich habe auch ein Jinja2 template-Datei muss einen bestimmten Wert auf "true" gesetzt, wenn ein host gehört zu den "es-masters" - Gruppe.
Ich bin mir sicher, dass es eine einfache Möglichkeit, es zu tun, aber nach etwas Googeln und dem Lesen der Dokumentation, habe ich gezeichnet leer.
Ich bin auf der Suche nach etwas einfachen und programmatischen wie diese gehen in der Jinja2 template:
{% if hostvars[host][group] == "es-masters" %}
node_master=true
{% else %}
node_master=false
{% endif %}
Irgendwelche Ideen?
- Sind Sie vorbei hostvars auf die render-Funktion oder erwarten Sie jinja2 Zugriff hostvars?
- Das war nur ein Beispiel, wirklich - was ich wirklich Suche, ist eine programmatische Art und Weise zu "sehen" die Gruppen, die einen bestimmten host Mitglied ist, und einen Weg finden, ändern Sie eine variable in einer Vorlage, die Grundlage.
- Docs: neben der Speicherung von Variablen direkt in der INI-Datei, host-und Gruppe-Variablen gespeichert werden können in einzelnen Dateien relativ zu der inventory-Datei. Diese variable Dateien im YAML-format. Siehe YAML-Syntax wenn Sie neu in YAML. Der YAML-Bibliothek enthalten ist, mit der AppEngine SDK
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tun Sie es den anderen Weg herum.
Sie prüfen, ob die Kennung (hostname oder IP oder was auch immer in deinem Inventar) ist in der angegebenen Gruppe. Nicht wenn die Gruppe in der hostvars.
Aber, was Sie besser tun sollten, ist diese:
Bieten Standard-Vorlage
Als override in group_vars
Wenn Ihr Inventar nicht identifiziert hosts mit ansible_fqdn, ansible_hostname, etc., Sie können auch
group_names
prüfen, ob der aktuelle host hat "es-masters", wie eine seiner Gruppen.Sehen http://docs.ansible.com/ansible/playbooks_variables.html#magic-variables-and-how-to-access-information-about-other-hosts.
So vermeiden Sie Fehler mit der nicht vorhandenen Gruppe sollten Sie zuerst überprüfen, wenn die Gruppe vorhanden ist: