![](/img/trans.png)
[英]ansible conditional statements should not include jinja2 templating delimiters
[英]Ansible: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}
有人可以帮助我理解和解决它吗
- name: Copying file to sever2
fetch:
src: /tmp/
dest: /u0/test/
when:
"{{ inventory_hostname == 'testdb' }}"
在您的情况下,您应该使用没有 Jinja 分隔符的 when 条件。
例子:
when: inventory_hostname == 'testdb'
详细解释:
当文本和模板的上下文中需要变量插值时,使用 Jinja 模板分隔符。 这告诉 Ansible 使用变量的值而不是变量名。
例子:
vars:
fav_tool: Ansible
tasks:
- debug:
msg: "I like fav_tool"
这将输出:
"msg": "I like fav_tool"
这不是我想要的,我想显示“我喜欢 Ansible” 。 那么我必须“告诉” fav_tool
使用fav_tool
的值。
- debug:
msg: "I like {{ fav_tool }}"
同样,我们在模板中使用 Jinja 模板分隔符。 我们想要将变量和表达式与文本分开的地方。
示例模板如下:
if fav_tool == 'Ansible'
I like Ansible
endif
... 将产生完全相同的文本而不评估:
if fav_tool == 'Ansible'
I like Ansible
endif
但是,当我们使用 Jinja 分隔符时:
{% if fav_tool == 'Ansible' %}
I like Ansible
{% endif %}
这将导致:
I like Ansible
当我们使用诸如when:
条件when:
,我们不需要分隔符,因为条件会自动将变量插入到值中。
''
)例子:
这里的情况颠倒了,任何没有用单引号括起来的东西都会被自动评估。 此处仅将'Ansible'
视为文本(未评估)。
vars:
fav_tool: Ansible
tasks:
- debug:
msg: "Ansible rocks!"
when: fav_tool == 'Ansible'
它对我有用
when:
(inventory_hostname in groups['testdb'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.