在由管道分隔的花括号中,我有一组jinja2动作。在那组动作中,我需要添加一个变量,但是我不断收到语法错误。
debug:
msg: "{{ item.path | basename | regex_replace('{{ variable }}', '') }}"
with_items: "{{ content.files }}"
请注意,该变量将包含一些正则表达式字符串,例如... ansible的问题在于,它在双引号中包含双引号。我尝试转义,将双引号转换为单引号...无济于事。
按原样运行上面的命令时,它将变量视为文字值。
答案 0 :(得分:1)
您不需要大括号来表示大括号内的变量。这是一个简单的剧本来演示:
---
- name: test
hosts: localhost
gather_facts: false
vars:
content:
files:
- path: /path1/itemXXX.jpg
- path: /path2/itXem.pdf
regex_pattern: '[X]+' # Match one or more X's
tasks:
- debug:
msg: "{{ item.path | basename | regex_replace(regex_pattern, '') }}"
with_items: "{{ content.files }}"
结果是:
TASK [debug] ***********************************************************************************************************************************************************************
ok: [localhost] => (item={'path': '/path1/itemXXX.jpg'}) => {
"msg": "item.jpg"
}
ok: [localhost] => (item={'path': '/path2/itXem.pdf'}) => {
"msg": "item.pdf"
}