Ansible jinja2 停止删除转义的双引号

时间:2021-07-13 16:47:00

标签: ansible jinja2

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\"]"

2 个答案:

答案 0 :(得分:1)

改变:

my_var: "[\"test\"]"

到:

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

或:

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

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

答案 1 :(得分:1)

使用single-quotated style。引用:

| ...“\”和“””字符可以随意使用。

my_var: '[\"test\"]'

这是唯一需要的更改。您的代码运行良好

shell> cat .env
MY_VARS="[\"test\"]"
相关问题