此剧本仅需修改盘符变量,就可运行ansible-playbook剧本,可在几分钟内完成上百台服务器硬盘初始化。
目录
一、Ansible-playbook磁盘分区脚本
1、磁盘初始化剧本文件清单
###Ansible-playbook脚本目录
[root@node data_lvm]# tree
.
├── data_lvm.yml
├── group_vars
│ └── all
├── hosts
└── roles
└── data_lvm
└── tasks
└── main.yml
2、磁盘初始化playbook
###Ansible-playbook运行脚本
[root@node data_lvm]# cat data_lvm.yml
---
- name: 创建LVM卷,初始化挂载硬盘
hosts: all
remote_user: root
gather_facts: no
roles:
- data_lvm
3、磁盘初始化变量
默认仅需修改device_name变量即可
###Ansible-playbook脚本变量
[root@node data_lvm]# cat group_vars/all
---
#磁盘名称,可使用fdisk查看
device_name: /dev/sda
number: 1
#vg卷组名称
vg_name: data_vg
#lv逻辑卷名称
lv_name: data_lv
#硬盘挂载目录
mount_path: /opt
#硬盘文件系统格式
filesystemtype: ext4
注:此实例仅适用新服务器硬盘初始化场景,此脚本会将新硬盘转换为PV盘,并将硬盘所有空间添加到LVM卷,如需扩容或多硬盘场景,请根据实际需求修改脚本。
4、主机清单
###Ansible主机清单
[root@node data_lvm]# cat hosts
[hosts]
10.0.14.12 ansible_ssh_port=22 ansible_ssh_user='root' ansible_ssh_pass='Admin@2022'
10.0.14.24 ansible_ssh_port=22 ansible_ssh_user='root' ansible_ssh_pass='Admin@2022'
10.0.14.21 ansible_ssh_port=22 ansible_ssh_private_key_file=/etc/ansible/ssh_key_file/21
10.0.14.33 ansible_ssh_port=22 ansible_ssh_private_key_file=/etc/ansible/ssh_key_file/33
5、磁盘初始化剧本(包含:分区、格式化、fstab挂载)
注:默认将所有硬盘空间添加到LV卷组
###Ansible-playbook磁盘分区脚本
[root@node data_lvm]# cat roles/data_lvm/tasks/main.yml
---
- name: 创建LVM类型PV分区
parted:
device: '{{ device_name }}'
number: '{{ number }}'
flags: [ lvm ]
state: present
- name: 创建VG组
lvg:
vg: '{{ vg_name }}'
pvs: '{{ device_name }}{{ number }}'
- name: 创建LVM逻辑卷
lvol:
vg: '{{ vg_name }}'
lv: '{{ lv_name }}'
size: +100%FREE
- name: 格式化逻辑卷
filesystem:
fstype: '{{ filesystemtype }}'
dev: '/dev/{{ vg_name }}/{{ lv_name }}'
- name: 逻辑卷挂载
mount:
path: '{{ mount_path }}'
src: '/dev/{{ vg_name }}/{{ lv_name }}'
fstype: '{{ filesystemtype }}'
state: mounted
二、运行Ansible-Playbook
[root@node data_lvm]# ansible-playbook -i hosts data_lvm.yml