Ansible实现对目标主机进行磁盘分区,创建逻辑卷、格式化并挂载

block:正常的时候执行
rescure: 不正常的时候执行
always:无论如何都会执行

磁盘分区

写入一个文件中
  • 首先给目标主机server2添加一块新的20G的虚拟硬盘/dev/vdc。
    在这里插入图片描述
  • 查看分区的帮助文档:[devops@server1 ansible]$ ansible-doc parted
  • 编辑.yml文件并写入:
[devops@server1 ansible]$ vim my_disk.yml
---
 - hosts: test
  tasks:
    - name: Create a new primary partition
      parted:
        device: /dev/vdc
        number: 1
        part_end: 1GiB      #等于在这一行前面加 part_start: 1MiB
        state: present
    - name: Create two partition
      parted:
        device: /dev/vdc
        number: 2
        part_start: 1GiB
        part_end: 2GiB
        state: present
  • 执行:
[devops@server1 ansible]$ ansible-playbook my_disk.yml 

在这里插入图片描述

  • 在目标主机server2上查看:
[root@server2 ~]# fdisk -l

在这里插入图片描述

将新建分区的信息设置为变量
  • 编辑.yml文件并写入以下:
---
 - hosts: test
  vars_files:
    - storage_vars.yml    #存放变量信息文件
  tasks:
    - name: Create a new primary partition
      parted:
        device: /dev/vdc
        number: "{{ item.number }}"    #变量
        part_start: "{{ item.start }}"    #变量
        part_end: "{{ item.end }}"    #变量
        state: present
      loop: "{{ partitions }}"   #循环partitions模块中的内容
  • 新建storage_vars.yml文件,并写入是第几块分区,起始的位置信息。
[devops@server1 ansible]$ vim storage_vars.yml
---
partitions:
 - number: 1
    start: 1MiB
    end: 1GiB
 - number: 2
    start: 1GiB
    end: 2GiB
  • 执行:
[devops@server1 ansible]$ ansible-playbook my_disk.yml

在这里插入图片描述

  • 在目标主机server2查看
[root@server2 ~]# fdisk -l

在这里插入图片描述

创建逻辑卷

创建逻辑卷
  • 查看帮助文档。
[devops@server1 ansible]$ ansible-doc lvg   #物理卷组
[devops@server1 ansible]$ ansible-doc lvol  #逻辑卷
[devops@server1 ansible]$ ansible-doc filesystem   #文件系统类型
[devops@server1 ansible]$ ansible-doc mount  #挂载
  • 在磁盘分区的基础上继续编辑文件my_disk.yml ,加入创建物理卷组,创建逻辑卷,格式化文件系统并挂载等模块:
[devops@server1 ansible]$ vim my_disk.yml 
---
 - hosts: test
  vars_files:
    - storage_vars.yml
  tasks:
    - name: Create a new primary partition
      parted:
        device: /dev/vdc
        number: "{{ item.number }}"
        part_start: "{{ item.start }}"
        part_end: "{{ item.end }}"
        state: present
      loop: "{{ partitions }}"

    - name: create volume group   #创建pv
      lvg:
        vg: vg
        pvs: /dev/vdc1

    - name: create a logical volume    #创建lv
      lvol:
        vg: vg
        lv: test
        size: 100%VG
        resizefs: true      #可以扩展
        force: yes     #如果有数据,强制创建
        state: present
    - name: create a xfs filesystem     #格式化文件系统
      filesystem:
        fstype: xfs
        dev: /dev/vg/test

    - name: mount lvs     #挂载
      mount:
        path: /var/www/html    #挂载点
        src: /dev/vg/test   #挂载设备
        fstype: xfs
        state: mounted     # 挂载
        opts: noatime   #不修改access time
  • 执行:
[devops@server1 ansible]$ ansible-playbook my_disk.yml 

在这里插入图片描述

  • 在目标主机server2查看:
[root@server2 ~]# df
[root@server2 ~]# cat /etc/fstab

在这里插入图片描述

添加判断条件when,即当要添加的逻辑卷已经存在时直接跳过不执行
  • 修改my_disk.yml文件,在原有的基础上加入when判断条件:
[devops@server1 ansible]$ vim my_disk.yml 

在这里插入图片描述

  • 编辑存放变量的storage_vars.yml文件。
[devops@server1 ansible]$ vim storage_vars.yml

在这里插入图片描述

  • 执行:
[devops@server1 ansible]$ ansible-playbook my_disk.yml
  • 因为设备已经存在,所以显示skipping。
    在这里插入图片描述
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值