From c01d0e10681f45ed292a9c5ef5a10bf2d97f72ae Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Mon, 22 Jan 2024 21:19:39 +0100 Subject: storage/lvm: simplify by moving thinpool handling to base role --- roles/storage/lvm/base/defaults/main.yml | 21 +++++++++++-------- roles/storage/lvm/base/filter_plugins/lvm.py | 31 ---------------------------- roles/storage/lvm/base/tasks/main.yml | 21 ++++++++++++++++--- roles/storage/lvm/device/defaults/main.yml | 2 -- roles/storage/lvm/device/tasks/main.yml | 18 ++-------------- roles/storage/lvm/volume/defaults/main.yml | 2 -- roles/storage/lvm/volume/tasks/main.yml | 7 ------- 7 files changed, 32 insertions(+), 70 deletions(-) delete mode 100644 roles/storage/lvm/base/filter_plugins/lvm.py (limited to 'roles/storage') diff --git a/roles/storage/lvm/base/defaults/main.yml b/roles/storage/lvm/base/defaults/main.yml index f85e2c80..bc57a43d 100644 --- a/roles/storage/lvm/base/defaults/main.yml +++ b/roles/storage/lvm/base/defaults/main.yml @@ -7,6 +7,14 @@ lvm_groups: {} # - /dev/sdb # - /dev/sdc +lvm_thinpools: {} + +# lvm_thinpools: +# foo/test: +# vg: foo +# lv: test +# size: 4G + lvm_devices: {} # lvm_devices: @@ -14,17 +22,12 @@ lvm_devices: {} # vg: "{{ host_name }}" # lv: dev-test # size: 1G -# foo/test: &_lvm_thinpool_foo_test_ -# vg: foo -# lv: test -# thinpool: true -# size: 4G # foo/blub: -# parent: *_lvm_thinpool_foo_test_ +# parent: "{{ lvm_thinpools['foo/test'] }}" # lv: blub # size: 3G # foo/hugo: -# parent: *_lvm_thinpool_foo_test_ +# parent: "{{ lvm_thinpools['foo/test'] }}" # lv: hugo # size: 2G @@ -38,13 +41,13 @@ lvm_volumes: {} # fs: ext4 # dest: /srv/test # foo/app1: -# parent: *_lvm_thinpool_foo_test_ +# parent: "{{ lvm_thinpools['foo/test'] }}" # lv: app1 # size: 3G # fs: ext4 # dest: /srv/app1 # foo/app2: -# parent: *_lvm_thinpool_foo_test_ +# parent: "{{ lvm_thinpools['foo/test'] }}" # lv: app2 # size: 2G # fs: ext4 diff --git a/roles/storage/lvm/base/filter_plugins/lvm.py b/roles/storage/lvm/base/filter_plugins/lvm.py deleted file mode 100644 index 312741a6..00000000 --- a/roles/storage/lvm/base/filter_plugins/lvm.py +++ /dev/null @@ -1,31 +0,0 @@ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - -from functools import partial - -from ansible import errors - - -def lvm_device_list(data): - try: - thinpools = [] - devices = [] - for name, device in data.items(): - entry = {'name': name, 'device': device} - if 'thinpool' in device and device['thinpool'] == True: - thinpools.append(entry) - else: - devices.append(entry) - return thinpools + devices - except Exception as e: - raise errors.AnsibleFilterError("lvm_device_list(): %s" % str(e)) - - -class FilterModule(object): - - filter_map = { - 'lvm_device_list': lvm_device_list, - } - - def filters(self): - return self.filter_map diff --git a/roles/storage/lvm/base/tasks/main.yml b/roles/storage/lvm/base/tasks/main.yml index 04d44ad0..a564e3c0 100644 --- a/roles/storage/lvm/base/tasks/main.yml +++ b/roles/storage/lvm/base/tasks/main.yml @@ -11,12 +11,27 @@ pv_options: "{{ item.value.pv_options | default(omit) }}" state: present +- name: install thin-provisioning-tools + when: (lvm_thinpools | list | length) > 0 + apt: + name: thin-provisioning-tools + state: present + +- name: create lvm thinpools + loop: "{{ lvm_thinpools | dict2items }}" + loop_control: + label: "{{ item.key }}" + lvol: + vg: "{{ item.value.vg }}" + thinpool: "{{ item.value.lv }}" + size: "{{ item.value.size }}" + - name: create lvm devices - loop: "{{ lvm_devices | lvm_device_list }}" + loop: "{{ lvm_devices | dict2items }}" loop_control: - label: "{{ item.name }}" + label: "{{ item.key }}" vars: - lvm_device: "{{ item.device }}" + lvm_device: "{{ item.value }}" include_role: name: storage/lvm/device diff --git a/roles/storage/lvm/device/defaults/main.yml b/roles/storage/lvm/device/defaults/main.yml index abe4f52c..f9e1b255 100644 --- a/roles/storage/lvm/device/defaults/main.yml +++ b/roles/storage/lvm/device/defaults/main.yml @@ -1,11 +1,9 @@ --- # lvm_device: # parent: -# thinpool: true # ... # vg: foo # lv: bar -# thinpool: false # size: 10G lvm_device: "{{ storage_device }}" diff --git a/roles/storage/lvm/device/tasks/main.yml b/roles/storage/lvm/device/tasks/main.yml index bac06b3d..303013ec 100644 --- a/roles/storage/lvm/device/tasks/main.yml +++ b/roles/storage/lvm/device/tasks/main.yml @@ -1,25 +1,11 @@ --- -- name: check device parent - when: "'parent' in lvm_device" - assert: - msg: "the device parent must be a lvm thinpool" - that: - - (lvm_device.parent.thinpool | default(false)) - -- name: install thin-provisioning-tools - when: (lvm_device.thinpool | default(false)) - apt: - name: thin-provisioning-tools - state: present - - name: create logical volume lvol: vg: "{{ lvm_device.parent.vg | default(lvm_device.vg) }}" - lv: "{{ (lvm_device.thinpool | default(false)) | ternary(omit, lvm_device.lv) }}" + lv: "{{ lvm_device.lv }}" size: "{{ lvm_device.size }}" - thinpool: "{{ (lvm_device.thinpool | default(false)) | ternary(lvm_device.lv, (lvm_device.parent.lv | default(omit))) }}" + thinpool: "{{ lvm_device.parent.lv | default(omit) }}" - name: export device path - when: not (lvm_device.thinpool | default(false)) set_fact: storage_device_path: "/dev/mapper/{{ lvm_device.parent.vg | default(lvm_device.vg) | replace('-', '--') }}-{{ lvm_device.lv | replace('-', '--') }}" diff --git a/roles/storage/lvm/volume/defaults/main.yml b/roles/storage/lvm/volume/defaults/main.yml index 6c0d6cf5..c81fc239 100644 --- a/roles/storage/lvm/volume/defaults/main.yml +++ b/roles/storage/lvm/volume/defaults/main.yml @@ -1,11 +1,9 @@ --- # lvm_volume: # parent: -# thinpool: true # ... # vg: foo # lv: bar -# thinpool: false # size: 10G # fs: ext4 # dest: /srv/foo/bar diff --git a/roles/storage/lvm/volume/tasks/main.yml b/roles/storage/lvm/volume/tasks/main.yml index d7255739..7e8c304f 100644 --- a/roles/storage/lvm/volume/tasks/main.yml +++ b/roles/storage/lvm/volume/tasks/main.yml @@ -1,11 +1,4 @@ --- -- name: check volume parent - when: "'parent' in lvm_volume" - assert: - msg: "the volume parent must be a lvm thinpool" - that: - - (lvm_volume.parent.thinpool | default(false)) - - name: create logical volume lvol: vg: "{{ lvm_volume.parent.vg | default(lvm_volume.vg) }}" -- cgit v1.2.3