来自设置变量的 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 }}