使用when關鍵字,當when后面指定的條件滿足時,該tasks中指定的某個任務才會被執行
1)When語句
* 在when后面使用表達式,當表達式結果為True則執行
案例:
~~~
tasks:
- name: "shut down Debian flavored systems"
command: /sbin/shutdown -t now
when: ansible_os_family == "Debian"
(當操作系統為debian時就執行關機操作)
---
- hosts: webserver
user: admin
become: yes
vars:
- username: user01
tasks:
- name: create {{ username }} user
user: name={{ username }}
when: ansible_fqdn == "node2.51yuki.cn"
(當主機名為node2.51yuki.cn就在該機器上創建用戶user01)
~~~
~~~
---
- hosts: webserver
user: admin
become: yes
tasks:
- name: host 192.168.20.138 run this task
debug: msg="{{ansible_default_ipv4.address}}"
when: ansible_default_ipv4.address == "192.168.20.138"
- name: all host run this task
shell: hostname
register: info
- name: hostname is node2 run this task
debug: msg="{{ansible_fqdn}}"
when: info['stdout']=="node2.51yuki.cn"
~~~
* 可以使用列表形式來表示,當多個條件同時滿足才執行
~~~
tasks:
- name: "shut down CentOS 6 systems"
command: /sbin/shutdown -t now
when:
- ansible_distribution == "CentOS"
- ansible_distribution_major_version == "6"
(只有當系統是centos,并且版本為6的機器上執行)
~~~
* 使用變量進行判斷
~~~
vars:
epic: true
tasks:
- shell: echo "This certainly is epic!"
when: epic
~~~
* 與循環一起使用
~~~
tasks:
- command: echo {{ item }}
with_items: [ 0, 2, 4, 6, 8, 10 ]
when: item > 5
~~~
* 角色包含使用when
~~~
- include: tasks/sometasks.yml
when: "'reticulating splines' in output"
- hosts: webservers
roles:
- { role: debian_stock_config, when: ansible_os_family == 'Debian' }
~~~
- 第一章:Ansible基礎入門
- 第二章:Ansible系列手冊
- 第一節:Ansible系列之主機清單
- 第二節:Ansible系列之變量
- 第三節:Ansible系列之YAML
- 第四節:Ansible系列之條件判斷
- 第五節:Ansible系列之循環
- 第六節: Ansible系列之tags
- 第七節:Ansible系列之Jinja2
- 第三章:Ansible系列之模塊
- 第一節:user模塊
- 第二節:group模塊
- 第三節:cron模塊
- 第四節:copy模塊
- 第五節: file模塊
- 第六節:yum模塊
- 第七節:service模塊
- 第八節:shell模塊
- 第九節:script模塊
- 第十節:setup模塊
- 第十一節:filesystem和mount模塊
- 第十二節:synchronize模塊
- 第十三節: get_url模塊
- 第十四節: package模塊
- 第十五節:stat模塊
- 第十六節:unarchive模塊
- 第十七節: commang模塊
- 第四章:Ansible-playbook介紹
- 第五章:Ansible系統環境
- 第一節:Ansible Role 系統環境之epel設置