When 条件表达式
- == < > <= >= != or and
- vars is defined # 变量存在
- vars is not defined # 变量不存在
- vars in list # 变量在列表中
When 四种register结果判断
- when: result is failed #执行失败
- when: result is success #执行成功
- when: result is skipped #被跳过执行
- when: result is changed #是否修改
示例1 bool判断
---
- name: when test
hosts: dev
vars:
run_debug: true
tasks:
- name: debug
debug:
msg: "hello world"
when: run_debug |bool
示例2 defined
---
- name: when test
hosts: dev
vars:
run_service: firewalld
tasks:
- name: "{{ run_service}} service"
service:
name: "{{ run_service }}"
state: started
when: run_service is defined
示例3 in list
---
- name: when test
hosts: dev
vars:
support_os:
- RedHat
- CentOS
tasks:
- name: "OS Type"
debug:
msg: "The os type is {{ ansible_distribution }}"
when: ansible_distribution in support_os # ansible_distribution是ansible_facts中的变量
示例4 when + register
---
- name: when test
hosts: dev
tasks:
- name: start chronyd service
service:
name: chronyd
state: started
ignore_errors: true
register: result- name: debug
debug:
msg: "{{ result.failed }}"
when: result is success # 也可以使用 result.failed == false
示例4 loop + when (将对Loop中每项都执行when)
---
- name: when test
hosts: dev
tasks:
- name: debug
debug:
msg: "{{ item }}"
loop: "{{ ansible_mounts }}"
when: item.mount == "/" and item.size_available > 300000000