From ba2ab1cb42db29c8287c65a3f1e0b646eeba0464 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 20 Jan 2024 22:42:30 +0100 Subject: add storage_device roles --- roles/storage/lvm/base/defaults/main.yml | 36 ++++++++++++++++++++-------- roles/storage/lvm/base/filter_plugins/lvm.py | 18 +++++++------- roles/storage/lvm/base/tasks/main.yml | 15 +++++++++--- 3 files changed, 47 insertions(+), 22 deletions(-) (limited to 'roles/storage/lvm/base') diff --git a/roles/storage/lvm/base/defaults/main.yml b/roles/storage/lvm/base/defaults/main.yml index 36df4a51..f85e2c80 100644 --- a/roles/storage/lvm/base/defaults/main.yml +++ b/roles/storage/lvm/base/defaults/main.yml @@ -5,17 +5,15 @@ lvm_groups: {} # foo: # pvs: # - /dev/sdb -# - /dev/sdc1 +# - /dev/sdc -lvm_volumes: {} +lvm_devices: {} -# lvm_volumes: -# system/test: +# lvm_devices: +# system/dev-test: # vg: "{{ host_name }}" -# lv: test +# lv: dev-test # size: 1G -# fs: ext4 -# dest: /srv/test # foo/test: &_lvm_thinpool_foo_test_ # vg: foo # lv: test @@ -25,11 +23,29 @@ lvm_volumes: {} # parent: *_lvm_thinpool_foo_test_ # lv: blub # size: 3G -# fs: ext4 -# dest: /srv/blub # foo/hugo: # parent: *_lvm_thinpool_foo_test_ # lv: hugo # size: 2G + +lvm_volumes: {} + +# lvm_volumes: +# system/vol-test: +# vg: "{{ host_name }}" +# lv: vol-test +# size: 1G +# fs: ext4 +# dest: /srv/test +# foo/app1: +# parent: *_lvm_thinpool_foo_test_ +# lv: app1 +# size: 3G +# fs: ext4 +# dest: /srv/app1 +# foo/app2: +# parent: *_lvm_thinpool_foo_test_ +# lv: app2 +# size: 2G # fs: ext4 -# dest: /srv/hugo +# dest: /srv/app2 diff --git a/roles/storage/lvm/base/filter_plugins/lvm.py b/roles/storage/lvm/base/filter_plugins/lvm.py index 0f8b1e97..312741a6 100644 --- a/roles/storage/lvm/base/filter_plugins/lvm.py +++ b/roles/storage/lvm/base/filter_plugins/lvm.py @@ -6,25 +6,25 @@ from functools import partial from ansible import errors -def lvm_volume_list(data): +def lvm_device_list(data): try: thinpools = [] - volumes = [] - for name, volume in data.items(): - entry = {'name': name, 'volume': volume} - if 'thinpool' in volume and volume['thinpool'] == True: + devices = [] + for name, device in data.items(): + entry = {'name': name, 'device': device} + if 'thinpool' in device and device['thinpool'] == True: thinpools.append(entry) else: - volumes.append(entry) - return thinpools + volumes + devices.append(entry) + return thinpools + devices except Exception as e: - raise errors.AnsibleFilterError("lvm_volume_list(): %s" % str(e)) + raise errors.AnsibleFilterError("lvm_device_list(): %s" % str(e)) class FilterModule(object): filter_map = { - 'lvm_volume_list': lvm_volume_list, + 'lvm_device_list': lvm_device_list, } def filters(self): diff --git a/roles/storage/lvm/base/tasks/main.yml b/roles/storage/lvm/base/tasks/main.yml index 75af733b..04d44ad0 100644 --- a/roles/storage/lvm/base/tasks/main.yml +++ b/roles/storage/lvm/base/tasks/main.yml @@ -11,11 +11,20 @@ pv_options: "{{ item.value.pv_options | default(omit) }}" state: present -- name: create lvm volumes - loop: "{{ lvm_volumes | lvm_volume_list }}" +- name: create lvm devices + loop: "{{ lvm_devices | lvm_device_list }}" loop_control: label: "{{ item.name }}" vars: - lvm_volume: "{{ item.volume }}" + lvm_device: "{{ item.device }}" + include_role: + name: storage/lvm/device + +- name: create lvm volumes + loop: "{{ lvm_volumes | dict2items }}" + loop_control: + label: "{{ item.key }}" + vars: + lvm_volume: "{{ item.value }}" include_role: name: storage/lvm/volume -- cgit v1.2.3