#条件判断#
= value == "字符串",value == 数字
< value < 数字
> value > 数字
<= value <= 数字
>= value >= 数字
!= value != 数字
is defined value value is defined 变量存在
is not defined value is not defined 变量不存在
bool变量 为true value value的值为true
bool变量 false not value value的值为false
value in value2 value的值在value2列表中
多条条件组合
when:
条件1 and 条件2
- 条件1
- 条件2
when:
条件1 or 条件2
when: >
条件1
or
条件2
建立playbook ~/westos.yml要求如下: 建立大小为1500M名为/dev/vdb1的设备 如果/dev/vdb不存在请输入: /dev/vdb is not exist 如果/dev/vdb大小不足2G请输出: /dev/vdb is less then 2G 并建立800M大小的/dev/vdb1 此设备挂载到/westos上
---
- name: create /dev/vdb1
hosts: all
tasks:
- block:
- parted:
device: /dev/vdb
number: 1
state: present
part_end: 2000MiB
- parted:
device: /dev/vdb
number: 1
state: absent
- parted:
device: /dev/vdb
number: 1
state: present
part_end: 1500MiB
when: ansible_facts['devices']['vdb'] is defined
rescue:
- debug:
msg: /dev/vdb is less then 2G
- parted:
device: /dev/vdb
number: 1
state: present
part_end: 800MiB
always:
- filesystem:
fstype: xfs
dev: /dev/vdb1
force: yes
- mount:
path: /westos
src: /dev/vdb1
fstype: xfs
state: mounted
- name: check /dev/vdb
debug:
msg: "vdb is not exist"
when: ansible_facts['devices']['vdb'] is not defined
- name: check sdb
hosts: all
tasks:
- name: check
debug:
msg: "{{ansible_facts.all_ipv4_addresses}} is not exist with /dev/sdb"
when: ansible_facts.devices.sdb is not defined
- name: create sdb1
block:
- name: create 1500M sdb1
parted:
device: /dev/sdb
number: 1
state: present
part_end: 1500 MiB
when: ansible_facts.devices.sdb is defined
notify:
- filesystem
- mounted
rescue:
- name: check /dev/sdb
debug:
msg: "{{ansible_facts.all_ipv4_addresses}} 's /dev/sdb is less than 1500M; ## 注意:不同版本的虚拟机所列出的信息不一致,先使用 ansible ip -m setup 列出信息
when: ansible_facts.devices.sdb is defined
- name: create /dev/sdb
parted:
device: /dev/sdb
number: 1
state: present
part_end: 800MiB
when: ansible_facts.devices.sdb is defined
notify:
- filesystem
- mounted
handlers:
- name: filesystem
filesystem:
dev: /dev/sdb1
fstype: xfs
- name: mounted
mount:
path: /westos
src: /dev/sdb1
fstype: xfs
state: mounted