Невозможно добавить фигурные скобки в фигурные скобки в синтаксисе jinja2 - PullRequest
0 голосов
/ 16 января 2019

У меня есть набор действий jinja2 в фигурных скобках, разделенных трубами. В этом наборе действий мне нужно добавить переменную, но я получаю синтаксические ошибки.

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

Обратите внимание, что переменная будет содержать некоторую строку регулярного выражения, например ... Проблема, с которой сталкивается ansible, заключается в том, что она содержит двойные кавычки внутри двойных кавычек. Я пытался убежать, инвертировать двойные кавычки в одинарные ... ничего не получалось.

Когда я запускаю вышеизложенное как есть, переменная рассматривается как буквальное значение.

1 Ответ

0 голосов
/ 16 января 2019

Вам не нужны фигурные скобки для обозначения переменных внутри фигурных скобок. Вот простая пьеса для демонстрации:

---
  - 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"
}
...