来自设置变量的 Ansible 渲染变量
Ansible render variable from set variable
我想使用 jinja2's template
生成配置。但我坚持这一点。我使用 set
创建新变量,之后我需要使用 fallowing string 作为新变量进行渲染。我的示例代码显示了我想要实现的目标:
play.yml
- hosts: localhost
gather_facts: no
vars:
x: a
y: 1
tasks:
- name: templating
template:
src: test.j2
dest: test.txt
vars:
a1b: 'OK - work'
$test.j2
{% set host = x ~ y|string ~ 'b' %}
base: {{ host }}
expected: {{ a1b }}
之后我得到:
base: a1b
expected: OK - work
但我预计:
base: OK - work
expected: OK - work
可以说 Jinja
她可以呈现新字符串吗? | render
过滤器之类的东西?
Note: vars
section is necessary, because finally I want to use
vars_prompt
我找到了一些简单的死亡解决方法,但如果有人 'native' 回答那就太好了。
所以:
play.yml
- hosts: localhost
gather_facts: no
vars:
x: a
y: 1
a1b: 'super_variable'
tasks:
- name: templating
template:
src: test.j2
dest: tmp.j2
test.j2 我只是将 {{
作为字符串添加到模板中。
{% set o = '{{' ~ x ~ y|string ~ 'b' ~ '}}' %
base: {{ host }}
expected: {{ a1b }}
我想使用 jinja2's template
生成配置。但我坚持这一点。我使用 set
创建新变量,之后我需要使用 fallowing string 作为新变量进行渲染。我的示例代码显示了我想要实现的目标:
play.yml
- hosts: localhost
gather_facts: no
vars:
x: a
y: 1
tasks:
- name: templating
template:
src: test.j2
dest: test.txt
vars:
a1b: 'OK - work'
$test.j2
{% set host = x ~ y|string ~ 'b' %}
base: {{ host }}
expected: {{ a1b }}
之后我得到:
base: a1b
expected: OK - work
但我预计:
base: OK - work
expected: OK - work
可以说 Jinja
她可以呈现新字符串吗? | render
过滤器之类的东西?
Note:
vars
section is necessary, because finally I want to usevars_prompt
我找到了一些简单的死亡解决方法,但如果有人 'native' 回答那就太好了。
所以: play.yml
- hosts: localhost
gather_facts: no
vars:
x: a
y: 1
a1b: 'super_variable'
tasks:
- name: templating
template:
src: test.j2
dest: tmp.j2
test.j2 我只是将 {{
作为字符串添加到模板中。
{% set o = '{{' ~ x ~ y|string ~ 'b' ~ '}}' %
base: {{ host }}
expected: {{ a1b }}