Wie man eine Ansible Rolle der Variablen Datei relativ zu dem host?
Hier ist das detail von meinem playbook:
Playbook Baum
├─ devops
| ├─ roles
| | ├─ mongodb
| | ├─ haproxy
| | ├─ monit
| | | ├─ vars
| | | | └─ main.yml
| | | └─ ...
| | └─ ...
| ├─ hosts
| ├─ play1.yml
| └─ play2.yml
hosts
[play1]
...instructions...
[play2]
...instructions...
spielen1.yml
---
- hosts: play1
user: root
roles:
- haproxy
- monit
play2.yml
---
- hosts: play2
user: root
roles:
- mongodb
- monit
Frage
Ich würde gerne auf einen anderen Variablen-Datei für monit je nach host (spielen1.yml oder play2.yml). Wie ich kann den trick tun?
Vielen Dank
- Das ist AFAIK nicht möglich. Eine Rolle ist komplett unabhängig von deinem Inventar. Wenn Sie möchten, dass host-spezifische Variablen, die Sie erstellen müssen, vars in
host_vars
odergroup_vars
. Dieser Ordner kann entweder relativ zu Ihrem playbook oder relativ zur Inventar-Datei.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Malo,
Sollten Sie "host_vars" und nicht hosts_vars
Auch
play1
sollte mit dem Namen des Hosts ein, den Sie konfiguriert haben, in der hosts-Inventar.Laut http://docs.ansible.com/playbooks_best_practices.html#directory-layout die empfohlene Aufteilung ist wie folgt:
Beachten Sie die
host_vars/
- Verzeichnis. Dort können Sie haben, gehören host-spezifischen Variablen, die Ihre Rolle später verwenden können auf.Ansible können Sie trennen Sie Ihre Daten von code. Nun werden diese Daten, welche Sie definieren, in form von Variablen.
Wenn es um Variablen, gibt es Vorrang-Regeln, die kommen um zu spielen, wenn Sie die gleichen Variablen definiert, die Sie an mehreren Orten. Die Empfehlung ist
Bieten Standard-Variablen in Rollen -> defaults/Verzeichnis. Das ist, was es ist. Vernünftige Standards.
Überschreiben die Standardwerte aus anderen Orten, wie host_vars. das ist, wo Sie setzen würde, host-spezifische vars. Und das ist die Antwort auf Ihre Frage.
Jedoch, wenn Sie geben die gleiche var-in Rollen -> vars-Verzeichnis, das würde in der Rangfolge höher steht. also seien Sie vorsichtig über diese.
Abgesehen von diesen, gibt es einige weitere Vorrang-Regeln. Allerdings, Schöpfer von ansible empfehlen, die Definition von Variablen nur an einer Stelle. Ich persönlich würde nicht Folgen, dass die Regel, und würde sane defaults und hosts/Gruppen-spezifische vars.