无法使用Jinja2语法在花括号内添加花括号

时间:2019-01-15 21:46:09

标签: ansible jinja2

在由管道分隔的花括号中,我有一组jinja2动作。在那组动作中,我需要添加一个变量,但是我不断收到语法错误。

debug:
  msg: "{{ item.path | basename | regex_replace('{{ variable }}', '') }}"
with_items: "{{ content.files }}"

请注意,该变量将包含一些正则表达式字符串,例如... ansible的问题在于,它在双引号中包含双引号。我尝试转义,将双引号转换为单引号...无济于事。

按原样运行上面的命令时,它将变量视为文字值。

1 个答案:

答案 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"
}