0%

Aansible palybook 创建lvm并自动挂载

由于工作中经常会遇到添加磁盘,分区,挂载这种操作,使用ansible后再也不用一台台的搞了;主要使用到lvg,lvol,filesystem,mount模块;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
- hosts: test
vars:
vg_name: "vgtest"
lv_name: "lvtest"
pvs_name: "/dev/sdb"
dir_path: "/data"
tasks:
- name: 创建一个vg
lvg:
vg: "{{vg_name}}"
pvs: "{{pvs_name}}"
pesize: 4
- name: 创建一个lv
lvol:
vg: "{{vg_name}}"
lv: "{{lv_name}}"
size: 100%PVS
- name: 格式化lv
filesystem:
fstype: ext4
dev: "/dev/{{vg_name}}/{{lv_name}}"
- name: 获取UUID
shell: blkid /dev/"{{vg_name}}"/"{{lv_name}}" |awk '{print $2}'
register: result
ignore_errors: True
- name: 创建挂载目录
file:
path: "{{dir_path}}"
state: directory
mode: 0755
- name: 使用UUID挂载lvm分区
mount:
path: /data
src: "{{result.stdout}}"
fstype: ext4
state: mounted

由于我一直习惯使用UUID挂载分区(UUID是每个分区的唯一标识),所以我加了一步获取UUID的操作,这步也可以略去,挂载的时候使用分区名称进行挂载;还有一点就是使用lvm分区的时候,将整个磁盘做成pv是不需要进行分区操作的,这点比较方便;如果要做分区操作的话,可以使用以下playbook:

hosts: test
1
2
3
4
5
6
7
8
9
10
11
12
vars:
dev_name1: "/dev/sdb"
dev_name2: "/dev/sdb1"
tasks:
- name: Disk Partition
shell : fdisk "{{dev_name1}}" < /tmp/fdisk_temp.conf
- name: Disk Mkfs ext4
filesystem:
fstype: ext4
dev: "{{dev_name2}}"
- name: Disk Mount
shell: blkid /dev/sdb1 |awk '{print $2}'| sed -n 's/$/ \/data ext4 defaults 0 0/p' >> /etc/fstab && mount -a

受控机/tmp/fdisk_temp.conf内容

1
2
3
4
5
6
7
n
p
1
1

w
q