mirror of
https://github.com/mrlesmithjr/ansible-manage-lvm.git
synced 2026-09-07 16:08:20 +03:00
cleaned up and fixed all tasks including swap
This commit is contained in:
@@ -1,42 +1,62 @@
|
|||||||
Role Name
|
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
|
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.
|
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
|
Role Variables
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
````
|
````
|
||||||
---
|
lvm_groups:
|
||||||
# defaults file for ansible-manage-lvm
|
- vgname: ubuntu-vg
|
||||||
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)
|
disks: /dev/sda5,/dev/sdc,/dev/sdd #for multiple disks...../dev/sdb,/dev/sdc
|
||||||
create_lvname: test-lv #define lvm name when adding additional disks...should be defined in host_vars/host
|
create: true #defines if VG should exist or be removed....true or false
|
||||||
create_lvsize: 100%FREE #defines the lvm lv size --- (10G) - would create new lvm with 10Gigabytes -- (512) - would create new lvm with 512m
|
lvnames:
|
||||||
create_vgname: test-vg #defines the lvm vg name to create...
|
- lvname: swap_1
|
||||||
extend_lvm: false #defines if lvm vg should be extended (do not set create to true)...should be defined in host_vars/host
|
size: 5g #define size of lvol...100%FREE, 10g, 1024 (megabytes by default)
|
||||||
extend_lvname: test-lv #defines the lvm lv name to extend...should be defined in host_vars/host
|
create: true #defines if lvol should exist or be removed...true or false
|
||||||
extend_vgname: test-vg #defines the lvm vg name to extend...should be defined in host_vars/host
|
filesystem: swap #defines filesystem to format lvol as
|
||||||
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
|
mount: false #defines if filesystem should be mounted
|
||||||
lvm_current_disk: /dev/sda5 #defines the disk currently configured for lvm...should be defined in host_vars/host
|
mntp: [] #defines mountpoint for lvol
|
||||||
lvm_extend_disks: '{{ lvm_current_disk }},{{ lvm_new_disk }}' #defines the disks to extend in lvm group...should be defined in host_vars/host
|
extend: false #defines if lvol should be extended..ex. after adding additional disks to VG
|
||||||
lvm_filesystem: ext4 #defines the filesystem type to create when configuring lvm ( ext3, ext4, xfs, etc. )...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_new_disk: /dev/sdb #defines the new disk being added to volume group...should be defined in host_vars/host
|
resize: false
|
||||||
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
|
- lvname: root
|
||||||
resize_lvm: false #set to true if resizing the logical volume (do not set create to true)...should be defined in host_vars/host
|
size: 40g #define size of lvol...100%FREE, 10g, 1024 (megabytes by default)
|
||||||
resize_lvname: test-lv #defines the logical volume name to resize...should be defined in host_vars/host
|
create: true #defines if lvol should exist or be removed...true or false
|
||||||
resize_vgname: test-vg #defines the volume group name to resize...should be defined in host_vars/host
|
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
|
Dependencies
|
||||||
|
|||||||
@@ -1,22 +1,5 @@
|
|||||||
---
|
---
|
||||||
# defaults file for ansible-manage-lvm
|
# 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:
|
lvm_groups:
|
||||||
- vgname: ubuntu-vg
|
- vgname: ubuntu-vg
|
||||||
disks: /dev/sda5 #for multiple disks...../dev/sdb,/dev/sdc
|
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
|
- include: centos.yml
|
||||||
when: ansible_os_family == "RedHat"
|
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
|
- include: manage_lvm.yml
|
||||||
|
|||||||
+43
-24
@@ -4,44 +4,26 @@
|
|||||||
vg: "{{ item.vgname }}"
|
vg: "{{ item.vgname }}"
|
||||||
pvs: "{{ item.disks }}"
|
pvs: "{{ item.disks }}"
|
||||||
state: present
|
state: present
|
||||||
with_items:
|
with_items: lvm_groups
|
||||||
- lvm_groups
|
|
||||||
when: item.create is defined and item.create
|
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)
|
- name: manage_lvm | creating new LVM logical volume(s)
|
||||||
lvol:
|
lvol:
|
||||||
vg: "{{ item.0.vgname }}"
|
vg: "{{ item.0.vgname }}"
|
||||||
lv: "{{ item.1.lvname }}"
|
lv: "{{ item.1.lvname }}"
|
||||||
size: "{{ item.1.size }}"
|
size: "{{ item.1.size }}"
|
||||||
state: present
|
state: present
|
||||||
|
register: lvm
|
||||||
with_subelements:
|
with_subelements:
|
||||||
- lvm_groups
|
- lvm_groups
|
||||||
- lvnames
|
- lvnames
|
||||||
when: ( item.0.create is defined and item.0.create ) and ( item.1.create is defined and item.1.create )
|
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)
|
- name: manage_lvm | creating new filesystem on new LVM logical volume(s)
|
||||||
filesystem:
|
filesystem:
|
||||||
fstype: "{{ item.1.filesystem }}"
|
fstype: "{{ item.1.filesystem }}"
|
||||||
dev: "/dev/{{ item.0.vgname }}/{{ item.1.lvname }}"
|
dev: "/dev/{{ item.0.vgname }}/{{ item.1.lvname }}"
|
||||||
|
# resizefs: yes #coming in 2.0 which will replace the resizing filesystem task below
|
||||||
with_subelements:
|
with_subelements:
|
||||||
- lvm_groups
|
- lvm_groups
|
||||||
- lvnames
|
- lvnames
|
||||||
@@ -58,9 +40,46 @@
|
|||||||
- lvnames
|
- 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 )
|
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
|
- name: manage_lvm | resizing filesystem
|
||||||
command: lvextend {{ item.1.lvextend_options }} /dev/{{ item.0.vgname }}/{{ item.1.lvname }}
|
command: resize2fs /dev/{{ item.0.vgname }}/{{ item.1.lvname }}
|
||||||
with_subelements:
|
with_subelements:
|
||||||
- lvm_groups
|
- lvm_groups
|
||||||
- lvnames
|
- 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