我想在过滤器中使用嵌套的jinja表达式,但是这样做失败。
我有一个看起来像这样的变量文件:
NAME: "test"
VAR: ["a","b","c-test","d", "t-test"]
现在,我想在同一变量文件中使用ansible过滤器从VAR列表中提取特定的字符串。
我尝试过:
NAME: "test"
VAR: ["a","b","c-test","d","test-t"]
testc: "{{ VAR | select('match', 'c-{{ NAME }}') | list }}"
testt: "{{ VAR | select('match', '{{ NAME }}-t') | list }}"
和
NAME: "test"
VAR: ["a","b","c-test","d","test-t"]
testc: "{{ VAR | select('match', 'c-\'{{ NAME }}\'') | list }}"
testt: "{{ VAR | select('match', '{{ NAME }}-t') | list }}"
没有成功。
在“ select”以外的过滤器中使用嵌套Jinja时,我也遇到相同的问题。
如何在ansible过滤器中使用或转义嵌套的jinja表达式?
答案 0 :(得分:1)
您不能嵌套双花括号。双大括号内的名称已被评估为变量,因此您无需将其括在另一对双大括号中即可对其进行评估。您只需使用串联运算符~
直接将字符串文字'c-'
与变量NAME
串联起来:
test: "{{ VAR | select('match', 'c-' ~ NAME) | list }}"
test: "{{ VAR | select('match', NAME ~ '-t') | list }}"