hosts: all
gather_facts: true
tasks:
- name: testing statements
debug:
msg: "{{ ansible_hostname }} is log01 or log02"
when: ansible_hostname == "log01" or ansible_hostname == "log02"
上面的工作如此输出所示:
[root @ ansible-host]#ansible-playbook test.yml
播放[全部]
任务[聚会事实] ****************************************************** ****************************************************** ****************************************************** ****************************************************** **************好的:[log01]好的:[web01]好的:[web02]
任务[测试声明] ****************************************************** ****************************************************** ****************************************************** ****************************************************** ***********跳过:[web01]跳过:[web02]正常:[log01] => { “ msg”:“ log01是log01或log02”}
PLAY RECAP ****************************************************** ****************************************************** ****************************************************** ****************************************************** ************************** log01:ok = 2更改= 0不可达= 0
失败= 0 web01:确定= 1更改= 0 = 0
unreachable = 0失败= 0 web02:确定= 1
更改= 0不可达= 0失败= 0
但是当我将==更改为!=时,它应该反转输出,因此不再起作用:
hosts: all
gather_facts: true
tasks:
- name: testing statements
debug:
msg: "{{ ansible_hostname }} is log01 or log02"
when: ansible_hostname != "log01" or ansible_hostname != "log02"
现在输出为:
[root@ansible-host]# ansible-playbook test.yml
PLAY [all]
TASK [Gathering Facts]
ok: [log01]
ok: [web02]
ok: [web01]
TASK [testing statements]
ok: [web01] => {
"msg": "web01 is log01 or log02" }
ok: [web02] => {
"msg": "web02 is log01 or log02" }
ok: [log01] => {
"msg": "log01 is log01 or log02" }
PLAY RECAP
log01: ok=2 changed=0 unreachable=0 failed=0
web01: ok=2 changed=0 unreachable=0 failed=0
web02: ok=2 changed=0 unreachable=0 failed=0
答案 0 :(得分:2)
如果要使其不在web01主机上时运行该任务,则需要使用and运算符而不是or。如果您尝试跳过log01或log02主机,则可以这样重写您的主机:
when: '"log" not in ansible_hostname'
这将捕获任何日志实例。