2016-07-15 9 views
2

Ich versuche eine ansible Rolle zu erstellen, die nur dann von anderen Rollen abhängig ist, wenn der Hostname der Maschine, auf der er ausgeführt wird, eine bestimmte Zeichenfolge enthält. Zum Beispiel:Groß-/Kleinschreibung in Ansible ignorieren, wenn Bedingung?

dependencies: 
- { role: example-role, when: "'hostname' in ansible_hostname" } 

Wie es ist, läuft die Rolle, wenn der Host-Name der Maschine, die Phrase „Hostnamen“ enthält. Viele der Maschinen in unserem Gebäude haben jedoch Hostnamen, die groß geschrieben sind, zum Beispiel "HOSTNAME". In diesem Fall funktioniert die obige Anweisung nicht. Wie kann ich (abgesehen davon, dass du die Zeile duplizierst und "hostname" in Großbuchstaben steckst) dafür sorgen, dass Buchstabenfälle ignoriert werden?

Antwort

4

Konvertieren Sie die Zeichenfolge in Kleinbuchstaben und überprüfen Sie das nur. Wie folgt:

dependencies: 
- { role: example-role, when: "'hostname'|lower in ansible_hostname|lower" } 
+0

wie sicherstellen, dass der Eingang in Kleinbuchstaben ist? –

+0

Dafür ist das "| lowe" gedacht. –

+0

OK hab ich ... Ich musste nur '' low' 'neben '' hostname'' wie 'when:' 'hostname' | lower in ansible_hostname | lower" ' –