小编jlb*_*oot的帖子

ansible 2:不能在模板中使用undef vars

在ansible 1.9我有一些角色,我可以在模板中使用未定义的变量(ansible.cfg中的error_on_undefined_vars = False),但没有问题:

template.yml:

{{ var1 }}{{ var2 }}{{ var3 }}
Run Code Online (Sandbox Code Playgroud)

如果没有定义任何这些变量,则不代之.因此,您可以根据需要在您的剧本中指出其中一些变量而不是其他变量.

但是我在升级到ansible 2.2.0.0后发现,如果没有定义任何这些变量,则不会替换任何模板的变量,结果模板为:{{var1}} {{var2}} {{var3} }

例如:

剧本:

- hosts: myhost
   vars:
     var1=1
     var3=3
   roles:
     - myrole
Run Code Online (Sandbox Code Playgroud)

任务:

- name: copy template
  become: true
  template: src=test.j2 dest=/tmp/test owner=user group=user
Run Code Online (Sandbox Code Playgroud)

运行此playbook后,使用ansible 1.9运行的结果/ tmp/test运行

13
Run Code Online (Sandbox Code Playgroud)

和ansible 2.2.0.0是

{{ var1 }}{{ var2 }}{{ var3 }}
Run Code Online (Sandbox Code Playgroud)

所以,没有变量被替换.

但如果:

剧本:

- hosts: myhost
   vars:
     var1=1
     var2=2
     var3=3
   roles:
     - myrole
Run Code Online (Sandbox Code Playgroud)

运行此playbook后,使用ansible 1.9/2.2.0.0生成的/ tmp/test运行

123
Run Code Online (Sandbox Code Playgroud)

有没有人以前处理这种行为?

jinja2 ansible

6
推荐指数
1
解决办法
328
查看次数

标签 统计

ansible ×1

jinja2 ×1