ansible循环+判断

linux ansible循环+判断

给node1添加一块5G的硬盘
给node2添加一块2G的硬盘
node3不添加硬盘

[root@node1 ~]# lsblk 
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0          11:0    1   9G  0 rom  
nvme0n1     259:0    0  20G  0 disk 
├─nvme0n1p1 259:1    0   1G  0 part /boot
└─nvme0n1p2 259:2    0  19G  0 part 
  ├─cs-root 253:0    0  17G  0 lvm  /
  └─cs-swap 253:1    0   2G  0 lvm  [SWAP]
nvme0n2     259:3    0   5G  0 disk 

[root@node2 ~]# lsblk 
NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0          11:0    1   9G  0 rom  
nvme0n1     259:0    0  20G  0 disk 
├─nvme0n1p1 259:1    0   1G  0 part /boot
└─nvme0n1p2 259:2    0  19G  0 part 
  ├─cs-root 253:0    0  17G  0 lvm  /
  └─cs-swap 253:1    0   2G  0 lvm  [SWAP]
nvme0n2     259:3    0   2G  0 disk 

写一个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 24 16:34:21 CST 2022 on pts/0
[student@ansible ~]$ cd ansible/
[student@ansible ansible]$ ls
ansible.cfg  inventory  roles
[student@ansible ansible]$ vim partition.yml
---
- name: create 
  hosts: all
  tasks: 
    - name: create
      block: 
        - name: create nvme0n2
          parted: 
            device: /dev/nvme0n2
            number: 1
            part_start: 10MiB
            part_end: 2510MiB
            state: present

      rescue: 
        - name: disk size not enough
          debug: 
            msg: disk size not enough

        - name: restart nvme0n2
          parted: 
            device: /dev/nvme0n2
            number: 1
            part_start: 10MiB
            part_end: 1010MiB
            state: present

      always: 
        - name: mkfs.xfs
          filesystem:
            fstype: xfs
            dev: /dev/nvme0n2p1
      when: "'nvme0n2' in ansible_devices"

    - name: the device is not nvme0n2
      debug:
        msg: the device is not nvme0n2
      when: "'nvme0n2' not in ansible_devices"

[student@ansible ansible]$ ansible-playbook partition.yml

PLAY [create] ****************************************************************************

TASK [Gathering Facts] *******************************************************************
ok: [node1]
ok: [node2]
ok: [node3]

TASK [create nvme0n2] ********************************************************************
skipping: [node3]
fatal: [node2]: FAILED! => {"changed": false, "err": "Error: The location 2510MiB is outside of the device /dev/nvme0n2.\n", "msg": "Error while running parted script: /sbin/parted -s -m -a optimal /dev/nvme0n2 -- unit KiB mklabel msdos mkpart primary 10MiB 2510MiB", "out": "", "rc": 1}
changed: [node1]

TASK [disk size not enough] **************************************************************
ok: [node2] => {
    "msg": "disk size not enough"
}

TASK [restart nvme0n2] *******************************************************************
changed: [node2]

TASK [mkfs.xfs] **************************************************************************
skipping: [node3]
changed: [node2]
changed: [node1]

TASK [the device is not nvme0n2] *********************************************************
skipping: [node1]
skipping: [node2]
ok: [node3] => {
    "msg": "the device is not nvme0n2"
}

PLAY RECAP *******************************************************************************
node1                      : ok=3    changed=2    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
node2                      : ok=4    changed=2    unreachable=0    failed=0    skipped=1    rescued=1    ignored=0   
node3                      : ok=2    changed=0    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0   
[root@node1 ~]# lsblk 
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1    9G  0 rom  
nvme0n1     259:0    0   20G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
└─nvme0n1p2 259:2    0   19G  0 part 
  ├─cs-root 253:0    0   17G  0 lvm  /
  └─cs-swap 253:1    0    2G  0 lvm  [SWAP]
nvme0n2     259:3    0    5G  0 disk 
└─nvme0n2p1 259:4    0  2.5G  0 part 

[root@node2 ~]# lsblk 
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1    9G  0 rom  
nvme0n1     259:0    0   20G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
└─nvme0n1p2 259:2    0   19G  0 part 
  ├─cs-root 253:0    0   17G  0 lvm  /
  └─cs-swap 253:1    0    2G  0 lvm  [SWAP]
nvme0n2     259:1    0    2G  0 disk 
└─nvme0n2p1 259:2    0 1000M  0 part 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值