das folgende Textbuch Gegeben:Wie übergibt Ansible-Variablen an JMESPath Abfrage?
---
- name: "foo bar"
hosts: localhost
connection: local
gather_facts: false
vars:
foo:
-
a: aa
b: bb
-
a: cc
b: dd
tasks:
- debug:
msg: " filter {{foo}} to {{ foo | json_query(query)}} "
vars:
bar: ['dd','ee']
query: "[?a == 'cc' && contains (['dd','ee'],b)]"
#query: "[?a == 'cc' && contains ({{bar}} ,b)]"
Ich mag würde eine Variable in ansible bar: ['dd','ee']
zu einer jmes_path Abfrage wie "[?a == 'cc' && contains ({{bar}} ,b)]"
definiert passieren. Leider funktioniert das nicht, das Skript schlägt fehl.
fatal: [localhost]: FEHLGESCHLAGEN! => {"failed": true, "msg": "Das Feld 'args' hat einen ungültigen Wert ([]) und konnte nicht in ein dict konvertiert werden. Fehler war: Expected: comma, hat: literal: Parse-Fehler in Spalte 28, Token \ "dd \" (LITERAL), für Ausdruck: \ n \ "[? A == 'cc' & ([u'dd ', u'ee'], b)] \ "\ n^\ n \ nDer Fehler scheint in '/home/vagrant/testnew/lieferschein-deployment/stack.yml' zu sein: Zeile 16, Spalte 6, kann aber \ nwo anderswo sein Datei hängt von dem genauen Syntaxproblem ab. \ n \ nDie folgende Zeile scheint zu sein: \ n \ n Aufgaben: \ n - debug: \ n^here \ n "}
jedoch definieren, die Liste in der Abfrage selbst, Inline wie "[?a == 'cc' && contains (['dd','ee'],b)]"
, funktioniert es ohne Probleme
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": " filter [{u'a': u'aa', u'b': u'bb'}, {u'a': u'cc', u'b': u'dd'}] to [{u'a': u'cc', u'b': u'dd'}] "
}
Ist es möglich, eine ansible Variable in die Abfrage zu setzen, und wenn ja, wie?
das funktioniert, aber in einem echten playbook möchte ich eine Variable verwenden, die woanders definiert ist. In diesem Fall würde ich etwas brauchen, um es in eine Zeichenfolge umzuwandeln. – user140547
Also konvertieren Sie es in eine Zeichenfolge, was ist das Problem? – techraf
Und das nächste Mal machen Sie eine klare Aussage, wenn Sie schreiben "* Gegeben das folgende playbook: *", dass Sie tatsächlich erwarten, dass Leser "das gegebene playbook" ignorieren und Ihre Meinung lesen. – techraf