Ansible jinja2 停止删除转义双引号

Ansible jinja2 stop removing escaped double quote

defaults/main.yml

my_var: "[\"test\"]"

然后我将其呈现在一个模板中,例如 template.j2

MY_VARS="{{ my_var }}"
- name: "create .env from template"
  template:
    src: "templates/template.j2"
    dest: ".env"

渲染结果为:

MY_VARS="["d"]"

有没有办法停止用 ansible 将 \" 替换为 "

模板渲染的预期结果是:

MY_VARS="[\"d\"]"

变化:

my_var: "[\"test\"]"

至:

my_var: "[\\"test\\"]"

或:

您可以使用以下模板:(未测试)

MY_VARS="{{ my_var|tojson|regex_replace('^\\"|\\"$','') }}"

使用single-quotated style。引用:

| ...“\”和“””字符可以自由使用。

my_var: '[\"test\"]'

这是唯一需要更改的地方。您的代码工作正常

shell> cat .env
MY_VARS="[\"test\"]"