Ich habe eine ansible Datei (my_file.yml
), die etwa wie folgt aussieht:Wie können Variablen an eingeschlossene Aufgaben in ansible übergeben werden?
---
- name: The name
hosts: all
tasks:
- include:my_tasks.yml
vars:
my_var: "{{ my_var }}"
my_tasks.yml
:
- name: Install Curl
apt: pkg=curl state=installed
- name: My task
command: bash -c "curl -sSL http://x.com/file-{{ my_var }} > /tmp/file.deb"
Ich möchte passieren my_var
als Befehlszeilenargument ansible so kann ich wie folgt aus:
ansible-playbook my_file.yml --extra-vars "my_var=1.2.3"
Aber ich mit dem folgenden Fehler am Ende:
... Failed to template {{ my_var }}: Failed to template {{ my_var }}: recursive loop detected in template string: {{ my_var }}
Wenn ich die vars
in my_file.yml
wie folgt aussehen:
- include:my_tasks.yml
vars:
my_var: "1.2.3"
es funktioniert! Ich habe auch versucht, die Variablennamen, um etwas zu ändern, das nicht gleich my_var
, zum Beispiel:
- include:my_tasks.yml
vars:
my_var: "{{ my_var0 }}"
aber dann habe ich mit einem Fehler enden. Es scheint mir, dass die Variable nicht erweitert wird und stattdessen die Zeichenfolge "{{ my_var }}"
oder {{ my_var0 }}
an my_tasks.yml
übergeben wird. Wie löse ich das?
Wie kann ich eine Variable von einer Aufgabe übergeben (anstatt die Variable im Playbook oder in der Befehlszeile zu setzen)? –