2017-04-26 4 views
1

ich auf einer Liste von Hosts mit einer Host-Datei einen ansible Textbuch renne:ansible Textbuch auf mehreren Servern mit unterschiedlichen Vars

[consul] 
${HOST1} ansible_ssh_host=${HOST1} ansible_ssh_user=devops ansible_ssh_pass=blabla 
${HOST2} ansible_ssh_host=${HOST2} ansible_ssh_user=devops ansible_ssh_pass=blabla 
.......so on... 

Die Sache ist, dass ich eine andere Variable für jeden Host zu übergeben. Ich kenne die Flagge -e, die mir erlaubt, eine Variable mit dem ansible-playbook Befehl zu senden, aber es ist nicht für jeden der Hosts.

Ich bin mit dem Textbuch mit diesem:

ansible-playbook -vvvv site.yml

Wie kann ich eine andere var für jeden Host übergeben?

Danke!

Hinweis: Ich verwende ansible 1.7.1

+1

Welche Art von Variable (Wert) ist das denn? Sie könnten ein Mapping irgendwo in var erstellen, host_vars (group_vars) verwenden, das Inventar abfragen, um Fakten über andere Hosts zu finden usw. – weirdan

+0

Da Sie ausdrücklich sagen, dass Sie eine andere Variable für jeden Host übergeben möchten, sollten Sie es auschecken host_vars, die in Ihrer Version 1.7 verfügbar sind: http://docs.ansible.com/ansible/intro_inventory.html –

Antwort

1

Zwei Möglichkeiten, sollten Sie in der Lage sein, dies zu tun:

1) Fügen Sie die Variable in der Host-Datei:

[consul] 
${HOST1} ansible_ssh_host=${HOST1} .... myvar=x 
${HOST2} ansible_ssh_host=${HOST2} .... myvar=y 

2) Oder die include_vars Aufgabe verwenden, um eine Datei basierend auf dem Hostnamen, wenn yo

include_vars: "{{ ansible_ssh_host }}.yml" 

die zweite Methode ist gut zu laden Sie müssen viele Variablen für einen Host laden.

Für komplexere Fälle des Lookups Modul helfen kann: http://docs.ansible.com/ansible/playbooks_lookups.html

Verwandte Themen