Ansible/Jinja2嵌套转义

Ansible/Jinja2嵌套转义,ansible,jinja2,ansible-template,Ansible,Jinja2,Ansible Template,有没有办法让jinja2模板嵌套转义 replace: path: /etc/my_file regexp: '^my_var = ""' replace: !unsafe "my_var = {{getv '/{{ variable}}/my_dir/my_file'}}" 我想用我的{getv'/staging/my_dir/my_file'}替换我的{u var= 在这种情况下,{{getv}}不应该是模板化的外括号,而应该是内括号内的{{variable}。

有没有办法让jinja2模板嵌套转义

  replace:
    path: /etc/my_file
    regexp: '^my_var = ""'
    replace: !unsafe "my_var = {{getv '/{{ variable}}/my_dir/my_file'}}"
我想用我的{getv'/staging/my_dir/my_file'}替换我的{u var=


在这种情况下,{{getv}}不应该是模板化的外括号,而应该是内括号内的{{variable}。

可以连接替换字符串。比如说

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

每当您在Ansible中遇到冲突字符的问题时,经验法则是将它们作为字符串输出到Jinja表达式中。见: