ansible的lvg和lvol模块
- parted分区模块
- lvg模块的参数
- lvol模块的参数
- 创建lvm
- filesystem模块
- mount模块
- 存储管理综合练习
- 第八题
parted分区模块
实战环境的场景是批量分区和批量扩容
参数 | 解释 |
---|---|
align | 配置分区的alignment(对齐) |
device | 块设备(磁盘路径) |
flags | 分区的flags |
number | 分区编号 |
part_start | 起始扇区 |
part_end | 分区增加多少 |
state | Creates/removes |
unit | Size的unit信息 |
示例
- name: 新建10G分区parted:device: /dev/vdbnumber: 1state: presentpart_end: 10GB
lvg模块的参数
参数 | 解释 |
---|---|
pesize | 指定pe的大小 |
pvs | 要加载的pv(物理卷) |
vg | vg名 |
state | 创建present或删除absent |
lvol模块的参数
参数 | 解释 |
---|---|
lv | lv的名字 |
resizefs | 指定lv的大小(扩容) |
shrink | 缩容 |
size | 创建时指定的大小 |
resizefs | 调整大小yes |
force | 强制调整yes |
snapshot | 快照 |
创建lvm
---
- hosts: node2tasks:- name: 新建第一个磁盘分区parted:device: /dev/vdbnumber: 1state: presentpart_end: 1GiB- name: 新建第二个分区parted:device: /dev/vdbnumber: 2state: presentpart_start: 1GiBpart_end: 3GiB- name: 新建vglvg:vg: vg1pvs: /dev/vdb1- name: 新建lvlvol:vg: vg1lv: lv1# 指定2g大小size: 2g
filesystem模块
分区格式化模块
参数 | 解释 |
---|---|
dev | 块设备名称(磁盘路径) |
fstype | 分区格式 |
resizefs | 将文系统系统大小增加到磁盘的大小 |
示例代码
- name: 创建xfs文件系统filesystem:fstype: xfsdev: /dev/vdb1
mount模块
分区挂载模块
参数 | 解释 |
---|---|
fstype | 分区格式 |
opts | 挂载参数 |
path | 挂载点 |
src | 挂载的设备(uuid) |
state | present(临时挂载)mounted(持久挂载) |
示例代码
- name: 挂载示例mount:path: /datasrc: UUID=23d72cb3-da1d-4e40-a99f-bfad92caba7cfstype: xfsstate: present
存储管理综合练习
变量文件storage_vars.yml
---
partitions:- number: 1start: 1MiBend: 257MiBvolume_groups:- name: apache-vgdevices: /dev/vdb1logical_volumes:- name: content-lvsize: 64Mvgroup: apache-vgmount_path: /var/www- name: logs-lvsize: 128Mvgroup: apache-vgmount_path: /var/log/httpd
执行剧本storage.yml
---
- name: 存储配置演示hosts: webserversvars_files:- storage_vars.ymltasks:- name: 对磁盘/dev/vdb进行分区parted:device: /dev/vdbnumber: "{{ item.number }}"part_start: "{{ item.start }}"part_end: "{{ item.end }}"state: presentloop: "{{ partitions }}"# 扩容的话,加分区,再把心分区加到vg,然后扩容lv即可- name: 创建vglvg:vg: "{{ item.name }}"pvs: "{{ item.devices }}"loop: "{{ volume_groups }}"- name: 创建lvlvol:vg: "{{ item.vgroup }}"lv: "{{ item.name }}"size: "{{ item.size }}"loop: "{{ logical_volumes }}"# 判断lvs中不存在这个lv才创建这个lvwhen: item.name not in ansible_lvm["lvs"]- name: 对lv分区进行格式化filesystem:fstype: xfsdev: "/dev/{{ item.vgroup }}/{{ item.name }}"loop: "{{ logical_volumes }}"- name: 调整lv分区的容量lvol:vg: "{{ item.vgroup }}" lv: "{{ item.name }}"# 如果要扩容,调大size值即可size: "{{ item.size }}"# 是否调整容量resizefs: yesforce: yesloop: "{{ logical_volumes }}"- name: 持久挂载lv分区到挂载点mount:path: "{{ item.mount_path }}"src: "/dev/{{ item.vgroup }}/{{ item.name }}"fstype: xfsopts: noatimestate: mountedloop: "{{ logical_volumes }}"
第八题
---
- name: 创建逻辑卷hosts: alltasks:- block:- name: 创建逻辑卷1500Mlvol:vg: researchlv: datasize: 1500rescue:- name: 提示无法创建该大小的逻辑卷fail:msg: Could not create logical volume of that sizewhen: ansible_lvm.lvs.data is undefined# 如果lv.data没有被定义就打印错误提示:无法创建该大小的逻辑卷- name: 创建逻辑卷800Mlvol:vg: researchlv: datasize: 800when: ansible_lvm.vgs.research is defined# 如果vg.research被定义了才执行创建800M- name: 提示卷组不存在fail:msg: Volume group does not existwhen: ansible_lvm.vgs.research is undefined# 如果vg.research没有被定义就提示卷组不存在always:- name: mkfs ext4filesystem:fstype: ext4dev: /dev/research/datawhen: ansible_lvm.lvs.data is defined# 如果lv.data被定义了就执行格式化