我需要在我正在使用 Ansible 处理的代码中转义双花括号。问题是我拥有所有需要在变量中转换的参数。基本上我正在研究模板创建者。
我试过使用 {% raw %}{{ name-of-variable }}{% endraw %} 但它没有用。当我尝试 /{/{ name-of-variable }} 我几乎明白了,但我也试图摆脱反斜杠。
下面是一些代码:
local_action:
module: replace
path: "/tmp/{{ ambiance }}/{{ seed }}DEFAULT.j2"
regexp: "{{ item.regexp1 }}"
replace: "{{ item.replace }}"
with_items:
- { regexp1: '^DBHOST.*$', replace: 'DBHOST = {% raw %}{{ databasehost }}{% endraw %}' }
- { regexp1: '^GLOBALHOST.*$', replace: 'GLOBALHOST = {% raw %}{{ global_hostname }}{% endraw %}' }
Run Code Online (Sandbox Code Playgroud)
我期望结果如下:
DBHOST = {{ satabasehost }}
GLOBALHOST = {{ global_hostname }}
Run Code Online (Sandbox Code Playgroud)
任何建议/想法?
blh*_*ing 32
{% raw %}{{ databasehost }}{% endraw %}
应该管用。
您也可以将其{{ '{{ databasehost }}' }}
用作替代品。
只是为了避免混淆:
和
ansible [core 2.14.0]
jinja version = 3.1.2
所有选项均来自@blhsing 建议的答案以及@DustWolf 的答案。
这是一个玩具示例,演示了官方jinja 文档中推荐的方法的使用以及 ansible 数据类型的使用!unsafe
:
考虑该文件test.j2
:
DBHOST blabla
GLOBALHOST blablu
OTHERHOST blabli
Run Code Online (Sandbox Code Playgroud)
和play.yml
:
DBHOST blabla
GLOBALHOST blablu
OTHERHOST blabli
Run Code Online (Sandbox Code Playgroud)
我们最终得到修改后的test.j2
:
DBHOST = {{ databasehost }}
GLOBALHOST = {{ global_hostname }}
OTHERHOST = {{ other_hostname }}
Run Code Online (Sandbox Code Playgroud)
{% raw %}...{% endraw %}
因此,该块对 OP 不起作用的事实并不是因为这不是一个有效的方法!这可能是由于完成替换的文件内容的某些特殊性,但这只是猜测。
归档时间: |
|
查看次数: |
9103 次 |
最近记录: |