diff --git a/handlers/main.yml b/handlers/main.yml index c4e1266..2027eb2 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -1,3 +1,2 @@ --- # handlers file for ansible-manage-lvm - diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml index 558c977..a3a01f2 100644 --- a/molecule/default/converge.yml +++ b/molecule/default/converge.yml @@ -13,10 +13,12 @@ opts: "--wipesignatures y" create: true filesystem: ext4 + mount: true mntp: "/var/lib/mountpoint" - lvname: my_lv2 - size: 10%VG + size: 20%VG opts: "--wipesignatures y" + mount: true create: true filesystem: xfs mntp: "/var/lib/mountpoint2" diff --git a/molecule/default/tests/__pycache__/test_default.cpython-27-PYTEST.pyc b/molecule/default/tests/__pycache__/test_default.cpython-27-PYTEST.pyc index a74dd9a..13c9709 100644 Binary files a/molecule/default/tests/__pycache__/test_default.cpython-27-PYTEST.pyc and b/molecule/default/tests/__pycache__/test_default.cpython-27-PYTEST.pyc differ diff --git a/tasks/create_fs.yml b/tasks/create_fs.yml new file mode 100644 index 0000000..037baa5 --- /dev/null +++ b/tasks/create_fs.yml @@ -0,0 +1,93 @@ +--- + +- name: manage_lvm | creating new filesystem on new LVM logical volume(s) + filesystem: + fstype: "{{ lv.filesystem }}" + dev: "/dev/{{ vg.vgname }}/{{ lv.lvname }}" + resizefs: yes + loop: "{{ vg.lvnames }}" + loop_control: + loop_var: lv + become: true + when: > + ( + (vg.create is defined and + vg.create) and + (lv is defined and + lv != 'None') and + (lv.create is defined and + lv.create) and + ( + lv.filesystem is defined and + lv.filesystem != 'None' and + lv.filesystem != 'xfs' + ) + ) + # unable to resize xfs: looks like we've to reference the mountpoint instead of the device + +- name: manage_lvm | creating new xfs filesystem on new LVM logical volume(s) + filesystem: + fstype: "{{ lv.filesystem }}" + dev: "/dev/{{ vg.vgname }}/{{ lv.lvname }}" + loop: "{{ vg.lvnames }}" + loop_control: + loop_var: lv + become: true + when: > + ( + (vg.create is defined and + vg.create) and + (lv is defined and + lv != 'None') and + (lv.create is defined and + lv.create) and + ( + lv.filesystem is defined and + lv.filesystem == 'xfs' + ) + ) + # unable to resize xfs: looks like we've to reference the mountpoint instead of the device + +- name: manage_lvm | unmounting filesystem(s) + mount: + path: "{{ lv.mntp }}" + src: "/dev/{{ vg.vgname }}/{{ lv.lvname }}" + fstype: "{{ lv.filesystem | default(omit) }}" + state: "absent" + become: true + loop: "{{ vg.lvnames }}" + loop_control: + loop_var: lv + when: > + (lv is defined and + lv != 'None') and + (lv.create is defined and + not lv.create and + lv.filesystem != "swap") + +- name: "debug mount" + loop: "{{ vg.lvnames }}" + debug: var=lv + loop_control: + loop_var: lv + + +- name: manage_lvm | mounting new filesystem(s) + mount: + path: "{{ lv.mntp }}" + src: "/dev/{{ vg.vgname }}/{{ lv.lvname }}" + fstype: "{{ lv.filesystem }}" + state: "mounted" + opts: "{{ lv.mopts | default('defaults') }}" + become: true + loop: "{{ vg.lvnames }}" + loop_control: + loop_var: lv + when: > + ((vg.create is defined and + vg.create) and + lv != 'None' and + (lv.create is defined and + lv.create) and + (lv.mount is defined and + lv.mount)) diff --git a/tasks/create_lv.yml b/tasks/create_lv.yml index 837588b..983e420 100644 --- a/tasks/create_lv.yml +++ b/tasks/create_lv.yml @@ -1,40 +1,30 @@ --- +- debug: var=vg + +- name: "debug lvm" + loop: "{{ vg.lvnames }}" + debug: var=lv + loop_control: + loop_var: lv - name: manage_lvm | creating new LVM logical volume(s) lvol: - vg: "{{ vg.0.vgname }}" - lv: "{{ vg.1.lvname'] }}" - size: "{{ vg.1.size }}" + vg: "{{ vg.vgname }}" + lv: "{{ lv.lvname }}" + size: "{{ lv.size }}" shrink: no - opts: "{{ vg.1.opts | default('') }}" + opts: "{{ lv.opts | default('') }}" state: "present" + loop: "{{ vg.lvnames }}" + loop_control: + loop_var: lv become: true when: > ( - (vg.0.create is defined - and vg.0.create) and - (vg[1] is defined and - vg.1 != 'None') and - (vg.1.create is defined and - vg.1.create) - ) - -- name: manage_lvm | creating new filesystem on new LVM logical volume(s) - filesystem: - fstype: "{{ vg.1.filesystem }}" - dev: "/dev/{{ vg.0.vgname }}/{{ vg.1.lvname }}" - resizefs: yes - become: true - when: > - ( - (vg.0.create is defined and - vg.0.create) and - (vg[1] is defined and - vg.1 != 'None') and - (vg.1.create is defined and - vg.1.create) and - ( - vg.1.filesystem is defined and - vg.1.filesystem != 'None' - ) + (vg.create is defined + and vg.create) and + (lv is defined and + lv != 'None') and + (lv.create is defined and + lv.create) ) diff --git a/tasks/manage_lvm.yml b/tasks/manage_lvm.yml index 59df20d..a8e1587 100644 --- a/tasks/manage_lvm.yml +++ b/tasks/manage_lvm.yml @@ -2,59 +2,31 @@ - name: manage_lvm | manage physical volume group creation include: create_vg.yml -- name: manage_lvm | loop over logical volume(s) +- name: manage_lvm | loop over logical volume group(s) to create logical volumes include: create_lv.yml loop: "{{ lvm_groups }}" loop_control: loop_var: vg -- name: manage_lvm | unmounting filesystem(s) - mount: - name: "{{ item.1.mntp }}" - src: "/dev/{{ item.0.vgname }}/{{ item.1.lvname }}" - fstype: "{{ item.1.filesystem | default(omit) }}" - state: "absent" - become: true - loop: "{{ lvm_groups|subelements('lvnames') }}" - when: > - (item.1 is defined and - item.1 != 'None') and - (item.1.create is defined and - not item.1.create and - item.1.filesystem != "swap") - -- name: manage_lvm | mounting new filesystem(s) - mount: - name: "{{ item.1.mntp }}" - src: "/dev/{{ item.0.vgname }}/{{ item.1.lvname }}" - fstype: "{{ item.1.filesystem }}" - state: "mounted" - opts: "{{ item.1.mopts | default('defaults') }}" - become: true - loop: "{{ lvm_groups|subelements('lvnames') }}" - when: > - ((item.0.create is defined and - item.0.create) and - (item.1 is defined and - item.1 != 'None') and - (item.1.create is defined and - item.1.create) and - (item.1.mount is defined and - item.1.mount)) +- name: manage_lvm | loop over logical volume group(s) to create filesystems + include: create_fs.yml + loop: "{{ lvm_groups }}" + loop_control: + loop_var: vg - name: manage_lvm | Removing LVM logical volume(s) lvol: - vg: "{{ item.0.vgname }}" - lv: "{{ item.1.lvname }}" + vg: "{{ item.vgname }}" + lv: "{{ item.0.lvname }}" state: "absent" force: yes become: true loop: "{{ lvm_groups|subelements('lvnames') }}" when: > - (item.1 is defined and - item.1 != 'None') and - (item.1.create is defined and - not item.1.create) + (item.0 is defined and + item.0 != 'None') and + (item.0.create is defined and + not item.0.create) - name: manage_lvm | Removing LVM volume group(s) lvg: