mirror of
https://github.com/mrlesmithjr/ansible-manage-lvm.git
synced 2025-12-14 22:04:48 +03:00
cleaned up and fixed all tasks including swap
This commit is contained in:
72
README.md
72
README.md
@@ -1,42 +1,62 @@
|
||||
Role Name
|
||||
=========
|
||||
|
||||
Role to manage LVM Groups/Logical Volumes. Can be used to create, extend or resize LVM.
|
||||
Role to manage LVM Groups/Logical Volumes. Can be used to create, extend or resize LVM Groups and volumes.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
Devices/disks to be part of the LVM setup must be identified prior to using this role. Ensure that you select the correct devices/disks.
|
||||
|
||||
##### Creating LVM
|
||||
###### /dev/sda5
|
||||
|
||||
##### Extending LVM
|
||||
###### Current disk /dev/sda5
|
||||
###### New Disk /dev/sdb
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
````
|
||||
---
|
||||
# defaults file for ansible-manage-lvm
|
||||
create_lvm: false #defines if lvm should be created when adding additional disks...should be defined in host_vars/host (do not set extend or resize to true)
|
||||
create_lvname: test-lv #define lvm name when adding additional disks...should be defined in host_vars/host
|
||||
create_lvsize: 100%FREE #defines the lvm lv size --- (10G) - would create new lvm with 10Gigabytes -- (512) - would create new lvm with 512m
|
||||
create_vgname: test-vg #defines the lvm vg name to create...
|
||||
extend_lvm: false #defines if lvm vg should be extended (do not set create to true)...should be defined in host_vars/host
|
||||
extend_lvname: test-lv #defines the lvm lv name to extend...should be defined in host_vars/host
|
||||
extend_vgname: test-vg #defines the lvm vg name to extend...should be defined in host_vars/host
|
||||
lvextend_options: '-L+10G' #defines the options to pass to lvextend --- ('-L+10G') - would increase by 10GB whereas ('-l +100%FREE') would increase to full capacity
|
||||
lvm_current_disk: /dev/sda5 #defines the disk currently configured for lvm...should be defined in host_vars/host
|
||||
lvm_extend_disks: '{{ lvm_current_disk }},{{ lvm_new_disk }}' #defines the disks to extend in lvm group...should be defined in host_vars/host
|
||||
lvm_filesystem: ext4 #defines the filesystem type to create when configuring lvm ( ext3, ext4, xfs, etc. )...should be defined in host_vars/host
|
||||
lvm_new_disk: /dev/sdb #defines the new disk being added to volume group...should be defined in host_vars/host
|
||||
lvm_new_mntp: /mnt/test #defines the desired mount point to be created and new logical volume to be mounted to...should be defined in host_vars/host
|
||||
resize_lvm: false #set to true if resizing the logical volume (do not set create to true)...should be defined in host_vars/host
|
||||
resize_lvname: test-lv #defines the logical volume name to resize...should be defined in host_vars/host
|
||||
resize_vgname: test-vg #defines the volume group name to resize...should be defined in host_vars/host
|
||||
lvm_groups:
|
||||
- vgname: ubuntu-vg
|
||||
disks: /dev/sda5,/dev/sdc,/dev/sdd #for multiple disks...../dev/sdb,/dev/sdc
|
||||
create: true #defines if VG should exist or be removed....true or false
|
||||
lvnames:
|
||||
- lvname: swap_1
|
||||
size: 5g #define size of lvol...100%FREE, 10g, 1024 (megabytes by default)
|
||||
create: true #defines if lvol should exist or be removed...true or false
|
||||
filesystem: swap #defines filesystem to format lvol as
|
||||
mount: false #defines if filesystem should be mounted
|
||||
mntp: [] #defines mountpoint for lvol
|
||||
extend: false #defines if lvol should be extended..ex. after adding additional disks to VG
|
||||
lvextend_options: -L+10G #defines the options to pass to lvextend --- ('-L+10G') - would increase by 10GB whereas ('-l +100%FREE') would increase to full capacity
|
||||
resize: false
|
||||
- lvname: root
|
||||
size: 40g #define size of lvol...100%FREE, 10g, 1024 (megabytes by default)
|
||||
create: true #defines if lvol should exist or be removed...true or false
|
||||
filesystem: ext4 #defines filesystem to format lvol as
|
||||
mount: true
|
||||
mntp: / #defines mountpoint for lvol
|
||||
extend: true #defines if lvol should be extended..ex. after adding additional disks to VG
|
||||
lvextend_options: -L+5G #defines the options to pass to lvextend --- ('-L+10G') - would increase by 10GB whereas ('-l +100%FREE') would increase to full capacity
|
||||
resize: true
|
||||
- vgname: test-vg
|
||||
disks: /dev/sdb #for multiple disks...../dev/sdb,/dev/sdc
|
||||
create: true #defines if VG should exist or be removed....true or false
|
||||
lvnames:
|
||||
- lvname: test_1
|
||||
size: 5g #define size of lvol...100%FREE, 10g, 1024 (megabytes by default)
|
||||
create: true #defines if lvol should exist or be removed...true or false
|
||||
filesystem: ext4 #defines filesystem to format lvol as
|
||||
mount: true #defines if filesystem should be mounted
|
||||
mntp: /mnt/test_1 #defines mountpoint for lvol
|
||||
extend: false #defines if lvol should be extended..ex. after adding additional disks to VG
|
||||
lvextend_options: -L+10G #defines the options to pass to lvextend --- ('-L+10G') - would increase by 10GB whereas ('-l +100%FREE') would increase to full capacity
|
||||
resize: true
|
||||
- lvname: test_2
|
||||
size: 10g #define size of lvol...100%FREE, 10g, 1024 (megabytes by default)
|
||||
create: true #defines if lvol should exist or be removed...true or false
|
||||
filesystem: ext4 #defines filesystem to format lvol as
|
||||
mount: true
|
||||
mntp: /mnt/test_2 #defines mountpoint for lvol
|
||||
extend: false #defines if lvol should be extended..ex. after adding additional disks to VG
|
||||
lvextend_options: -L+10G #defines the options to pass to lvextend --- ('-L+10G') - would increase by 10GB whereas ('-l +100%FREE') would increase to full capacity
|
||||
resize: true
|
||||
````
|
||||
|
||||
Dependencies
|
||||
|
||||
@@ -1,22 +1,5 @@
|
||||
---
|
||||
# defaults file for ansible-manage-lvm
|
||||
create_lvm: false #defines if lvm should be created when adding additional disks...should be defined in host_vars/host (do not set extend or resize to true)
|
||||
create_lvname: test-lv #define lvm name when adding additional disks...should be defined in host_vars/host
|
||||
create_lvsize: 100%FREE #defines the lvm lv size --- (10G) - would create new lvm with 10Gigabytes -- (512) - would create new lvm with 512m
|
||||
create_vgname: test-vg #defines the lvm vg name to create...
|
||||
extend_lvm: false #defines if lvm vg should be extended (do not set create to true)...should be defined in host_vars/host
|
||||
extend_lvname: test-lv #defines the lvm lv name to extend...should be defined in host_vars/host
|
||||
extend_vgname: test-vg #defines the lvm vg name to extend...should be defined in host_vars/host
|
||||
lvextend_options: '-L+10G' #defines the options to pass to lvextend --- ('-L+10G') - would increase by 10GB whereas ('-l +100%FREE') would increase to full capacity
|
||||
lvm_current_disk: /dev/sda5 #defines the disk currently configured for lvm...should be defined in host_vars/host
|
||||
lvm_extend_disks: '{{ lvm_current_disk }},{{ lvm_new_disk }}' #defines the disks to extend in lvm group...should be defined in host_vars/host
|
||||
lvm_filesystem: ext4 #defines the filesystem type to create when configuring lvm ( ext3, ext4, xfs, etc. )...should be defined in host_vars/host
|
||||
lvm_new_disk: /dev/sdb #defines the new disk being added to volume group...should be defined in host_vars/host
|
||||
lvm_new_mntp: /mnt/test #defines the desired mount point to be created and new logical volume to be mounted to...should be defined in host_vars/host
|
||||
resize_lvm: false #set to true if resizing the logical volume (do not set create to true)...should be defined in host_vars/host
|
||||
resize_lvname: test-lv #defines the logical volume name to resize...should be defined in host_vars/host
|
||||
resize_vgname: test-vg #defines the volume group name to resize...should be defined in host_vars/host
|
||||
|
||||
lvm_groups:
|
||||
- vgname: ubuntu-vg
|
||||
disks: /dev/sda5 #for multiple disks...../dev/sdb,/dev/sdc
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
- name: create_lvm | creating new LVM volume group
|
||||
lvg:
|
||||
vg: "{{ create_vgname }}"
|
||||
pvs: "{{ lvm_new_disk }}"
|
||||
state: present
|
||||
|
||||
- name: create_lvm | creating new LVM logical volume
|
||||
lvol:
|
||||
vg: "{{ create_vgname }}"
|
||||
lv: "{{ create_lvname }}"
|
||||
size: "{{ create_lvsize }}"
|
||||
|
||||
- name: create_lvm | creating new filesystem on new LVM logical volume
|
||||
filesystem:
|
||||
fstype: "{{ lvm_filesystem }}"
|
||||
dev: "/dev/{{ create_vgname }}/{{ create_lvname }}"
|
||||
|
||||
- name: create_lvm | mounting new filesystem
|
||||
mount:
|
||||
name: "{{ lvm_new_mntp }}"
|
||||
src: "/dev/{{ create_vgname }}/{{ create_lvname }}"
|
||||
fstype: "{{ lvm_filesystem }}"
|
||||
state: mounted
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
- name: extend_lvm | extending existing LVM volume group
|
||||
lvg:
|
||||
vg: "{{ extend_vgname }}"
|
||||
pvs: "{{ lvm_extend_disks }}"
|
||||
|
||||
- name: extend_lvm | extending existing filesystem
|
||||
command: lvextend {{ lvextend_options }} /dev/{{ extend_vgname }}/{{ extend_lvname }}
|
||||
@@ -6,13 +6,4 @@
|
||||
- include: centos.yml
|
||||
when: ansible_os_family == "RedHat"
|
||||
|
||||
#- include: create_lvm.yml
|
||||
# when: create_lvm is defined and create_lvm
|
||||
|
||||
#- include: extend_lvm.yml
|
||||
# when: extend_lvm is defined and extend_lvm
|
||||
|
||||
#- include: resize_lvm.yml
|
||||
# when: resize_lvm is defined and resize_lvm
|
||||
|
||||
- include: manage_lvm.yml
|
||||
|
||||
@@ -4,44 +4,26 @@
|
||||
vg: "{{ item.vgname }}"
|
||||
pvs: "{{ item.disks }}"
|
||||
state: present
|
||||
with_items:
|
||||
- lvm_groups
|
||||
with_items: lvm_groups
|
||||
when: item.create is defined and item.create
|
||||
|
||||
- name: manage_lvm | Removing LVM volume group(s)
|
||||
lvg:
|
||||
vg: "{{ item.vgname }}"
|
||||
pvs: "{{ item.disks }}"
|
||||
state: absent
|
||||
with_items:
|
||||
- lvm_groups
|
||||
when: item.create is defined and not item.create
|
||||
|
||||
- name: manage_lvm | creating new LVM logical volume(s)
|
||||
lvol:
|
||||
vg: "{{ item.0.vgname }}"
|
||||
lv: "{{ item.1.lvname }}"
|
||||
size: "{{ item.1.size }}"
|
||||
state: present
|
||||
register: lvm
|
||||
with_subelements:
|
||||
- lvm_groups
|
||||
- lvnames
|
||||
when: ( item.0.create is defined and item.0.create ) and ( item.1.create is defined and item.1.create )
|
||||
|
||||
- name: manage_lvm | Removing LVM logical volume(s)
|
||||
lvol:
|
||||
vg: "{{ item.0.vgname }}"
|
||||
lv: "{{ item.1.lvname }}"
|
||||
state: absent
|
||||
with_subelements:
|
||||
- lvm_groups
|
||||
- lvnames
|
||||
when: ( item.0.create is defined and item.0.create ) and ( item.1.create is defined and not item.1.create )
|
||||
|
||||
- name: manage_lvm | creating new filesystem on new LVM logical volume(s)
|
||||
filesystem:
|
||||
fstype: "{{ item.1.filesystem }}"
|
||||
dev: "/dev/{{ item.0.vgname }}/{{ item.1.lvname }}"
|
||||
# resizefs: yes #coming in 2.0 which will replace the resizing filesystem task below
|
||||
with_subelements:
|
||||
- lvm_groups
|
||||
- lvnames
|
||||
@@ -58,9 +40,46 @@
|
||||
- lvnames
|
||||
when: ( item.0.create is defined and item.0.create ) and ( item.1.create is defined and item.1.create ) and ( item.1.mount is defined and item.1.mount )
|
||||
|
||||
- name: manage_lvm | extending existing filesystem
|
||||
command: lvextend {{ item.1.lvextend_options }} /dev/{{ item.0.vgname }}/{{ item.1.lvname }}
|
||||
- name: manage_lvm | resizing filesystem
|
||||
command: resize2fs /dev/{{ item.0.vgname }}/{{ item.1.lvname }}
|
||||
with_subelements:
|
||||
- lvm_groups
|
||||
- lvnames
|
||||
when: ( item.0.create is defined and item.0.create ) and ( item.1.create is defined and item.1.create ) and ( item.1.extend is defined and item.1.extend )
|
||||
when: lvm.changed and item.1.filesystem != "swap"
|
||||
|
||||
- name: manage_lvm | resizing swap
|
||||
shell: "swapoff -a && mkswap /dev/{{ item.0.vgname }}/{{ item.1.lvname }} && swapon -va"
|
||||
with_subelements:
|
||||
- lvm_groups
|
||||
- lvnames
|
||||
when: lvm.changed and item.1.filesystem == "swap"
|
||||
|
||||
- name: manage_lvm | unmounting filesystem(s)
|
||||
mount:
|
||||
name: "{{ item.1.mntp }}"
|
||||
src: "/dev/{{ item.0.vgname }}/{{ item.1.lvname }}"
|
||||
fstype: "{{ item.1.filesystem }}"
|
||||
state: absent
|
||||
with_subelements:
|
||||
- lvm_groups
|
||||
- lvnames
|
||||
when: ( item.1.create is defined and not item.1.create )
|
||||
|
||||
- name: manage_lvm | Removing LVM logical volume(s)
|
||||
lvol:
|
||||
vg: "{{ item.0.vgname }}"
|
||||
lv: "{{ item.1.lvname }}"
|
||||
state: absent
|
||||
force: yes
|
||||
with_subelements:
|
||||
- lvm_groups
|
||||
- lvnames
|
||||
when: ( item.1.create is defined and not item.1.create )
|
||||
|
||||
- name: manage_lvm | Removing LVM volume group(s)
|
||||
lvg:
|
||||
vg: "{{ item.vgname }}"
|
||||
pvs: "{{ item.disks }}"
|
||||
state: absent
|
||||
with_items: lvm_groups
|
||||
when: item.create is defined and not item.create
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
---
|
||||
- name: resize_lvm | resizing filesystem
|
||||
command: resize2fs /dev/{{ resize_vgname }}/{{ resize_lvname }}
|
||||
Reference in New Issue
Block a user