来自set变量的Ansible渲染变量

时间:2018-12-11 10:06:14

标签: ansible jinja2 ansible-template

我想使用jinja2's template进行配置。但是我坚持下去。我使用set创建新变量,之后我需要使用休闲字符串作为渲染的新变量。我的示例代码显示了我想要实现的目标:

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过滤器一样?

  

注意:vars部分是必需的,因为最后我想使用   vars_prompt

1 个答案:

答案 0 :(得分:0)

我发现了一些简单的死亡解决方法,但是如果有人回答“本机”,那就太好了。

所以: play.yml

{{

test.j2 我只是将{% set o = '{{' ~ x ~ y|string ~ 'b' ~ '}}' % base: {{ host }} expected: {{ a1b }} 作为字符串添加到模板中。

conda install -c anaconda beautifulsoup4