2016-07-29 15 views
0

Ich habe eine ziemlich einfache hosts Dateidefinieren Host als Variable in ansible Hosts-Datei

[clients] 
qas0062 
[dbs_server] 
qas0063 

Für die Nutzer des Projekts wollen wir nicht sie hosts Datei ändern, sondern wir haben eine separate Datei, die user.config.yml enthält verschiedene vom Benutzer konfigurierbare Parameter. Dort haben wir Eintritt wie

dbs_server: qas0065 

Die Frage ist also: ist es möglich, eine Variable in der hosts-Datei zu verwenden, die einen Wert definiert in user.config.yml verwenden würde? Und was wäre das Format?

Antwort

3

Ziemlich sicher, dass Sie nicht mit dem tatsächlichen Host-Schlüssel Eintrag im Inventar templatize können, aber man kann den Wert seiner ansible_host Verbindung var templatize etwa den gleichen Effekt zu erzielen, zum Beispiel:

[clients] 
clienthost ansible_host="{{ clienthost_var }}" 
[dbs_server] 
dbsserver ansible_host="{{ dbsserver_var }}" 

dann setzten die Wert dieser Vars von externen Vars vor dem Beginn der Wiedergabe (zB mit der vars_files Direktive oder -e).

+0

Danke für Ihre Lösung, Matt. Ich werde es heute versuchen. – Bostone

+0

Ausgezeichnet! Es hat wunderbar funktioniert! – Bostone

0

Es gibt eine andere Möglichkeit, das Gleiche zu tun. Wir können einfach auf Werte im Rechner (Inventar) Datei beziehen, die durch die folgende Syntax in unserem Textbuch mit

host={{ groups['dbs_server'][0] }}

Das funktioniert gut, wenn Sie einen Eintrag in der Gruppe (db_server in diesem speziellen Fall) haben