Ansible / Jinja2 вложенный побег - PullRequest
0 голосов
/ 21 октября 2019

Есть ли способ иметь вложенное экранирование шаблона jinja2?

  replace:
    path: /etc/my_file
    regexp: '^my_var = ""'
    replace: !unsafe "my_var = {{getv '/{{ variable}}/my_dir/my_file'}}"

Я бы хотел заменить my_var = "" на my_var = {{getv '/staging/my_dir/my_file'}}

В этом случае {{getv}} не должно быть шаблонным (внешняя скобка), но {{variable}} внутри (внутренняя скобка) должно быть.

1 Ответ

0 голосов
/ 21 октября 2019

Возможно объединить строку replace . Например

  vars:
    lbrackets: "{{ '{{' }}"
    rbrackets: "{{ '}}' }}"
    quote: "'"

  tasks:
    - replace:
        path: /etc/my_file
        regexp: '^my_var = ""(.*)$'
        replace: "{{ 'my_var = ' ~
                     lbrackets ~ 'getv ' ~ quote ~
                     '/staging/my_dir/my_file' ~ quote ~ rbrackets
                     }}"
...