Ansible-playbook-Breite variabel
Ich habe ein playbook mit mehreren hosts Abschnitt. Ich möchte eine variable definieren, die in diesem Textbuch.yml-Datei, die gilt nur innerhalb der Datei, zum Beispiel:
vars:
my_global_var: 'hello'
- hosts: db
tasks:
-shell: echo {{my_global_var}}
- hosts: web
tasks:
-shell: echo {{my_global_var}}
Beispiel oben funktioniert nicht. Ich muss entweder duplizieren Sie die variable für jeden host-Abschnitt (schlecht) oder definieren Sie es auf einer höheren Ebene, zum Beispiel in meinem group_vars/all
(nicht das, was ich will, aber funktioniert). Ich bin mir auch bewusst, dass der Variablen-Dateien können enthalten sein, aber dies betrifft readibility. Jede Anregung, um es in den richtigen Bereich (e.g das playbook-Datei selbst)?
- Können Sie daran interessiert, PR #13787, die sich um genau das, was du suchst (und auch playbook-Breite vars_prompt).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
set_fact
Modul werden dies erreichen, wenn group_vars nicht Ihren Bedürfnissen entsprechen.http://docs.ansible.com/ansible/set_fact_module.html
Ich lieber Globale Variablen, die in der Inventar-Datei, wo Sie halten die Gruppen und Namen Ihres hosts.
Beispiel:
my-hosts
:Führen Sie Ihr playbook mit:
Die variable definiert werden, die für alle hosts.
Wenn Sie
ec2.py
oder einige andere dynamische Inventar, können Sie die globalen Variablen in der Dateigroup_vars/all
das gleiche Ergebnis zu erzielen.group_vars/all
statt. Ich aktualisiert meine Antwort.