ansible循环+判断

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@server 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@server ansible]$ ansible-playbook partition.yml 

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

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

TASK [test sdb] ************************************************************************************************************
fatal: [node3]: FAILED! => {"changed": true, "cmd": "lsblk | grep -w sdb", "delta": "0:00:00.006009", "end": "2022-10-31 20:10:30.995414", "msg": "non-zero return code", "rc": 1, "start": "2022-10-31 20:10:30.989405", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
...ignoring
changed: [node1]
changed: [node2]

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

TASK [creste 2500] *********************************************************************************************************
fatal: [node3]: FAILED! => {"changed": false, "err": "Error: Could not stat device /dev/sdb - No such file or directory.\n", "msg": "Error while getting device information with parted script: '/sbin/parted -s -m /dev/sdb -- unit 'KiB' print'", "out": "", "rc": 1}
fatal: [node2]: FAILED! => {"changed": false, "err": "Error: The location 2500MiB is outside of the device /dev/sdb.\n", "msg": "Error while running parted script: /sbin/parted -s -m -a optimal /dev/sdb -- unit KiB mklabel msdos mkpart primary 0% 2500MiB", "out": "", "rc": 1}
changed: [node1]

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

TASK [create 1000] *********************************************************************************************************
skipping: [node3]
changed: [node2]

TASK [format for lv] *******************************************************************************************************
fatal: [node3]: FAILED! => {"changed": false, "msg": "Device /dev/sdb1 not found."}
changed: [node2]
changed: [node1]

PLAY RECAP *****************************************************************************************************************
node1                      : ok=4    changed=3    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
node2                      : ok=5    changed=3    unreachable=0    failed=0    skipped=1    rescued=1    ignored=0   
node3                      : ok=4    changed=1    unreachable=0    failed=1    skipped=1    rescued=1    ignored=1   

验证

[root@node2 ~]# lsblk | grep sdb
sdb           8:16   0    2G  0 disk 
└─sdb1        8:17   0  999M  0 part 
[root@node2 ~]# blkid /dev/sdb1 
/dev/sdb1: UUID="73eba602-26b3-4ebe-a807-fc8e3b240e42" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="77b33106-01"

[root@node1 ~]# lsblk | grep sdb
sdb           8:16   0    5G  0 disk 
└─sdb1        8:17   0  2.5G  0 part 
[root@node1 ~]# blkid /dev/sdb1 
/dev/sdb1: UUID="dfbc933c-c722-4d9c-aa0c-b5007ece904c" TYPE="ext4" PARTUUID="e6371b44-01"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

seven凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值