summaryrefslogtreecommitdiff
path: root/roles/storage
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2024-01-22 21:19:39 +0100
committerChristian Pointner <equinox@spreadspace.org>2024-01-22 21:19:39 +0100
commitc01d0e10681f45ed292a9c5ef5a10bf2d97f72ae (patch)
tree83b10001ea969a40b0ca8af1dfad1883b37c879a /roles/storage
parentfix greenbone role (diff)
storage/lvm: simplify by moving thinpool handling to base role
Diffstat (limited to 'roles/storage')
-rw-r--r--roles/storage/lvm/base/defaults/main.yml21
-rw-r--r--roles/storage/lvm/base/filter_plugins/lvm.py31
-rw-r--r--roles/storage/lvm/base/tasks/main.yml21
-rw-r--r--roles/storage/lvm/device/defaults/main.yml2
-rw-r--r--roles/storage/lvm/device/tasks/main.yml18
-rw-r--r--roles/storage/lvm/volume/defaults/main.yml2
-rw-r--r--roles/storage/lvm/volume/tasks/main.yml7
7 files changed, 32 insertions, 70 deletions
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) }}"