首先,我以这种方式分离了剧本:
environtments/something/host_vars/host1.yml
roles/sshd/tasks/main.yml
主机的环境变量包含一些值:密钥对,在这种情况下:
specialinfo: 'blah'
并且该角色包含一个块,当此“ specialinfo”值匹配等等时应运行该块:
- name: Check that specialvalue is blah
block:
- name: Do something
...
- name: Do something else
...
when: {{ specialinfo }} == 'blah'
请帮助我实现这一目标,因为我非常确定问题出在“时间”情况之内。如果我需要名称中的副本(或类似名称),可以使用{{ specialinfo }}
请注意,我不能在此处使用with_items,因为它不能在block元素内使用。
答案 0 :(得分:1)
首先,您不能在when
中使用双花括号,因为条件本身必须是一个Jinja表达式。将条件更改为when: specialinfo == 'blah'
。
请注意,块的when
条件适用于块内的所有任务。这意味着相同的... == 'blah'
条件将同时应用于Do something
和Do something else
任务。如果要控制何时执行特定任务,请单独对任务使用when
,如下所示:
- debug: Do something
msg: is blah
when: specialinfo == 'blah'
- debug: Do something else
msg: is not blah
when: specialinfo != 'blah'