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