ansible循环+判断
练习:
给node1添加一块5G的硬盘
给node2添加一块2G的硬盘
node3不添加硬盘
写一个partition.yml的playbook,满足如下要求:
给所有的受控主机创建分区,创建2500M的分区,然后对分区进行格式化,格式化为xfs的文件系统。
如果不能满足创建2500M的分区,则显示错误消息为:disk size not enough,接着改为创建1000M。
如果没有/dev/sdb硬盘,则显示错误消息为:the device is not sdb
[student@ansible ansible]$ cat partition.yml
---
- name: parted
hosts: all
tasks:
- block:
- name: create 2500M
parted:
device: /dev/sda
number: 1
state: present
part_type: primary
part_start: 10MiB
part_end: 2510MiB
rescue:
- name: not enough 2500m
debug:
msg: disk size not enough
- name: create 1000m
parted:
device: /dev/sda
number: 1
part_type: primary
part_start: 10MiB
part_end: 1010MiB
state: present
always:
- name: format
filesystem:
fstype: xfs
dev: /dev/sda1
when: "ansible_devices.sda is defined"
- name: not defined
debug:
msg: the device is not
when: "ansible_devices.sda is defined"
[student@ansible ansible]$
效果
[student@ansible ansible]$ ansible-playbook partition.yml
PLAY [parted] ******************************************************************
TASK [Gathering Facts] *********************************************************
ok: [node2]
ok: [node3]
ok: [node1]
TASK [create 2500M] ************************************************************
ok: [node3]
ok: [node2]
ok: [node1]
TASK [format] ******************************************************************
ok: [node1]
ok: [node2]
ok: [node3]
TASK [not defined] *************************************************************
ok: [node1] => {
"msg": "the device is not"
}
ok: [node2] => {
"msg": "the device is not"
}
ok: [node3] => {
"msg": "the device is not"
}
PLAY RECAP *********************************************************************
node1 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node2 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node3 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
验证
[root@node1 ~]# lsblk | grep sda
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
[root@node1 ~]# blkid /dev/sda2
/dev/sda2: UUID="Ae9drF-pGML-uyYX-4BFv-qqtc-zUnQ-OYcBtD" TYPE="LVM2_member" PARTUUID="ac8d5d42-02"
[root@node1 ~]#
[root@node2 ~]# lsblk | grep sda
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
[root@node2 ~]# blkid /dev/sda1
/dev/sda1: UUID="5b39739e-93ff-41e4-afe0-1e0c4a247ea3" TYPE="xfs" PARTUUID="efd1763a-01"
[root@node2 ~]#