wake-up-neo.net

Wie kann ich eine Variable an ein Spielbuch in der Befehlszeile übergeben?

Ich bin neu bei Ansible und frage mich, wie das geht, da das Folgende nicht funktionierte

ansible-playbook -i '10.0.0.1,' yada-yada.yml --tags 'loaddata' Django_fixtures="tile_colors"

Wo Django_fixtures meine Variable ist.

143
Édouard Lopez

Beim Lesen der Dokumente finde ich den Abschnitt Übergeben von Variablen in der Befehlszeile , die dieses Beispiel ergeben: 

ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"

Weitere Beispiele zeigen, wie Sie aus JSON string (≥1.2) oder Datei (≥1.3) laden.

222
Édouard Lopez

In anderen Antworten wird angegeben, wie die Befehlszeilenvariablen übergeben werden sollen, nicht jedoch, wie auf sie zugegriffen werden soll.

--extra-vars "version=1.23.45 other_variable=foo"

In Ihrer Yml-Datei weisen Sie diese den bereichsabhängigen Variablen zu, indem Sie Folgendes tun:

vars:
    my_version: "{{ version }}"
    my_other_variable: {{ other_variable }}

Eine Alternative zur Verwendung der Befehlszeilenargumente besteht darin, Umgebungsvariablen zu verwenden, die bereits in Ihrer Sitzung definiert sind. Sie können diese wie folgt in Ihren anpassbaren Yml-Dateien referenzieren:

vars:
    my_version: "{{ lookup('env', 'version') }}"
    my_other_variable: {{ lookup('env', 'other_variable') }}
111
GreensterRox
ansible-playbook release.yml -e "version=1.23.45 other_variable=foo"
33
lanni654321

Sie können die Option --extra-vars verwenden. Siehe die Dokumente

27
jarv

Aus irgendeinem Grund funktionierte keine der obigen Antworten für mich. Da ich in Ansbile 2.2.0 mehrere zusätzliche Variablen an mein Playbook übergeben muss, habe ich es so zum Laufen gebracht.

ansible-playbook site.yaml -i hostinv -e firstvar=false -e second_var=value2
22
OpenITeX
ansible-playbook test.yml --extra-vars "arg1=${var1} arg2=${var2}"

In der Yml-Datei können Sie sie so verwenden

---
arg1: "{{ var1 }}"
arg2: "{{ var2 }}"

Außerdem sind --extra-vars und -e gleich. Sie können einen davon verwenden.

8
Ali Atakan

Dies hat auch bei mir funktioniert, wenn Sie Shell-Umgebungsvariablen verwenden möchten:

ansible-playbook -i "localhost," ldap.yaml --extra-vars="LDAP_Host={{ lookup('env', 'LDAP_Host') }} clustername=mycluster env=dev LDAP_USERNAME={{ lookup('env', 'LDAP_USERNAME') }} LDAP_PASSWORD={{ lookup('env', 'LDAP_PASSWORD') }}"

0
user164328

ansible-playbok -i <inventory> <playbook-name> -e "proc_name=sshd"

Sie können den obigen Befehl in den folgenden Playbooks verwenden. 

---
- name: Service Status
gather_facts: False
tasks:
- name: Check Service Status (Linux)
Shell: pgrep "{{ proc_name }}"
register: service_status
ignore_errors: yes
debug: var=service_status.rc`
0
Rajeev Singh
ansible-playbook release.yml --extra-vars "username=hello password=bye"

#you can now use the above command anywhere in the playbook as an example below:
tasks:
- name: Create a new user in Linux
Shell: useradd -m -p {{username}} {{password}}"
0
Naveen Goyal
 s3_sync:
      bucket: ansible-harshika
      file_root: "{{ pathoftsfiles  }}"
      validate_certs: false 
      mode: Push
      key_prefix: "{{ folder }}"

hier werden die Variablen mit den Namen 'pathoftsfiles' und 'folder' verwendet. Der Wert für diese Variable kann jetzt mit dem folgenden Befehl angegeben werden

Sudo ansible-playbook multiadd.yml --extra-vars "pathoftsfiles=/opt/lampp/htdocs/video/uploads/tsfiles/$2 folder=nitesh"

Hinweis: Verwenden Sie keine Anführungszeichen, wenn Sie die Werte an die Variable im Shell-Befehl übergeben

0
Nitesh Jain