Ansible:如何检查值:when条件中的密钥对

时间:2020-06-12 09:51:01

标签: ansible yaml

首先,我以这种方式分离了剧本:

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元素内使用。

1 个答案:

答案 0 :(得分:1)

首先,您不能在when中使用双花括号,因为条件本身必须是一个Jinja表达式。将条件更改为when: specialinfo == 'blah'

请注意,块的when条件适用于块内的所有任务。这意味着相同的... == 'blah'条件将同时应用于Do somethingDo something else任务。如果要控制何时执行特定任务,请单独对任务使用when,如下所示:

- debug: Do something
    msg: is blah
  when: specialinfo == 'blah'

- debug: Do something else
    msg: is not blah
  when: specialinfo != 'blah'