ansible循环+判断练习
作业:
给node1添加一块5G的硬盘
给node2添加一块2G的硬盘
node3不添加硬盘
[root@node1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
sr0 11:0 1 7.9G 0 rom /mnt
[root@node2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 2G 0 disk
sr0 11:0 1 7.9G 0 rom
写一个partition.yml的playbook,满足如下要求:
给所有的受控主机创建分区,创建2500M的分区,然后对分区进行格式化,格式化为xfs的文件系统。
如果不能满足创建2500M的分区,则显示错误消息为:disk size not enough,接着改为创建1000M。
如果没有/dev/sdb硬盘,则显示错误消息为:the device is not sdb
[root@ansible ~]# su - student
Last login: Mon Oct 31 21:34:16 CST 2022 on pts/0
[student@ansible ~]$ cd ansible/
[student@ansible ansible]$ cat partition.yml
[student@ansible ansible]$ cat partition.yml
---
- name: create vg
hosts: node1,node2,node3
tasks:
- name: test sdb
shell: lsblk | grep -w sdb
register: sdb
ignore_errors: yes
- name: sdb
debug:
msg: the device not is sdb
when: sdb.rc != 0
- name: create vg
block:
- name: creste 2500
parted:
device: /dev/sdb
number: 1
state: present
part_end: 2500MiB
rescue:
- name: output fail message
debug:
msg: disk size not enough
- name: create 1000
parted:
device: /dev/sdb
number: 1
state: present
part_end: 1000MiB
when: sdb.rc == 0
always:
- name: format for lv
filesystem:
dev: /dev/sdb1
fstype: ext4
[student@ansible ansible]$ ansible-playbook partition.yml
PLAY [create vg] **************