diff options
-rw-r--r-- | dan/k8s-emc.yml | 15 | ||||
-rw-r--r-- | inventory/group_vars/elevate-mediachannel-edge/vars.yml | 14 | ||||
-rw-r--r-- | inventory/host_vars/glt-stream.yml | 8 | ||||
-rw-r--r-- | inventory/host_vars/sgg-icecast.yml | 8 | ||||
-rw-r--r-- | roles/storage/lvm/base/defaults/main.yml | 27 | ||||
-rw-r--r-- | roles/storage/lvm/base/filter_plugins/lvm.py | 31 | ||||
-rw-r--r-- | roles/storage/lvm/base/tasks/main.yml | 11 | ||||
-rw-r--r-- | roles/storage/lvm/volume/defaults/main.yml | 2 | ||||
-rw-r--r-- | roles/storage/lvm/volume/tasks/main.yml | 1 | ||||
-rw-r--r-- | spreadspace/glt-stream.yml | 8 | ||||
-rw-r--r-- | spreadspace/sgg-icecast.yml | 8 |
11 files changed, 102 insertions, 31 deletions
diff --git a/dan/k8s-emc.yml b/dan/k8s-emc.yml index b8358fee..c643b5e4 100644 --- a/dan/k8s-emc.yml +++ b/dan/k8s-emc.yml @@ -18,20 +18,7 @@ - role: x509/acmetool/cert acmetool_cert_hostnames: - "{{ host_name }}.{{ host_domain }}" - - role: storage/lvm/volume - lvm_volume: - vg: storage - lv: cache - size: 5G - fs: ext4 - dest: /srv/cache - - role: storage/lvm/volume - lvm_volume: - vg: storage - lv: sfive - size: 1G - fs: ext4 - dest: /srv/sfive + - role: storage/lvm/base - import_playbook: ../common/kubernetes-cluster-layout.yml vars: diff --git a/inventory/group_vars/elevate-mediachannel-edge/vars.yml b/inventory/group_vars/elevate-mediachannel-edge/vars.yml index f7e9923e..454c27ed 100644 --- a/inventory/group_vars/elevate-mediachannel-edge/vars.yml +++ b/inventory/group_vars/elevate-mediachannel-edge/vars.yml @@ -1,3 +1,17 @@ --- kubernetes_node_labels: streaming.spreadspace.org/edge: "" + +lvm_volumes: + storage/cache: + vg: storage + lv: cache + size: 5G + fs: ext4 + dest: /srv/cache + storage/sfive: + vg: storage + lv: sfive + size: 1G + fs: ext4 + dest: /srv/sfive diff --git a/inventory/host_vars/glt-stream.yml b/inventory/host_vars/glt-stream.yml new file mode 100644 index 00000000..db9292da --- /dev/null +++ b/inventory/host_vars/glt-stream.yml @@ -0,0 +1,8 @@ +--- +lvm_volumes: + system/www: + vg: "{{ host_name }}" + lv: www + size: 10G + fs: ext4 + dest: /srv/www diff --git a/inventory/host_vars/sgg-icecast.yml b/inventory/host_vars/sgg-icecast.yml index a4deefdd..400018e9 100644 --- a/inventory/host_vars/sgg-icecast.yml +++ b/inventory/host_vars/sgg-icecast.yml @@ -38,6 +38,14 @@ spreadspace_apt_repo_components: nginx_server_names_hash_bucket_size: 64 +lvm_volumes: + system/www: + vg: "{{ host_name }}" + lv: www + size: 1G + fs: ext4 + dest: /srv/www + docker_pkg_provider: docker-com diff --git a/roles/storage/lvm/base/defaults/main.yml b/roles/storage/lvm/base/defaults/main.yml index 74dc0c20..36df4a51 100644 --- a/roles/storage/lvm/base/defaults/main.yml +++ b/roles/storage/lvm/base/defaults/main.yml @@ -6,3 +6,30 @@ lvm_groups: {} # pvs: # - /dev/sdb # - /dev/sdc1 + +lvm_volumes: {} + +# lvm_volumes: +# system/test: +# vg: "{{ host_name }}" +# lv: test +# size: 1G +# fs: ext4 +# dest: /srv/test +# foo/test: &_lvm_thinpool_foo_test_ +# vg: foo +# lv: test +# thinpool: true +# size: 4G +# foo/blub: +# 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 +# fs: ext4 +# dest: /srv/hugo diff --git a/roles/storage/lvm/base/filter_plugins/lvm.py b/roles/storage/lvm/base/filter_plugins/lvm.py new file mode 100644 index 00000000..0f8b1e97 --- /dev/null +++ b/roles/storage/lvm/base/filter_plugins/lvm.py @@ -0,0 +1,31 @@ +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +from functools import partial + +from ansible import errors + + +def lvm_volume_list(data): + try: + thinpools = [] + volumes = [] + for name, volume in data.items(): + entry = {'name': name, 'volume': volume} + if 'thinpool' in volume and volume['thinpool'] == True: + thinpools.append(entry) + else: + volumes.append(entry) + return thinpools + volumes + except Exception as e: + raise errors.AnsibleFilterError("lvm_volume_list(): %s" % str(e)) + + +class FilterModule(object): + + filter_map = { + 'lvm_volume_list': lvm_volume_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 ddcd49c7..75af733b 100644 --- a/roles/storage/lvm/base/tasks/main.yml +++ b/roles/storage/lvm/base/tasks/main.yml @@ -1,5 +1,5 @@ --- -- name: create volume groups +- name: create lvm volume groups loop: "{{ lvm_groups | dict2items }}" loop_control: label: "{{ item.key }}" @@ -10,3 +10,12 @@ pesize: "{{ item.value.pesize | default(omit) }}" pv_options: "{{ item.value.pv_options | default(omit) }}" state: present + +- name: create lvm volumes + loop: "{{ lvm_volumes | lvm_volume_list }}" + loop_control: + label: "{{ item.name }}" + vars: + lvm_volume: "{{ item.volume }}" + include_role: + name: storage/lvm/volume diff --git a/roles/storage/lvm/volume/defaults/main.yml b/roles/storage/lvm/volume/defaults/main.yml index a64a7c86..6c0d6cf5 100644 --- a/roles/storage/lvm/volume/defaults/main.yml +++ b/roles/storage/lvm/volume/defaults/main.yml @@ -1,7 +1,7 @@ --- # lvm_volume: # parent: -# type: lvm +# thinpool: true # ... # vg: foo # lv: bar diff --git a/roles/storage/lvm/volume/tasks/main.yml b/roles/storage/lvm/volume/tasks/main.yml index 166d6ff8..5b9cb1e7 100644 --- a/roles/storage/lvm/volume/tasks/main.yml +++ b/roles/storage/lvm/volume/tasks/main.yml @@ -4,7 +4,6 @@ assert: msg: "the volume parent must be a lvm thinpool" that: - - lvm_volume.parent.type == 'lvm' - (lvm_volume.parent.thinpool | default(false)) - name: install thin-provisioning-tools diff --git a/spreadspace/glt-stream.yml b/spreadspace/glt-stream.yml index e355d126..c76904ab 100644 --- a/spreadspace/glt-stream.yml +++ b/spreadspace/glt-stream.yml @@ -10,13 +10,7 @@ - role: apt-repo/spreadspace - role: x509/acmetool/base - role: nginx/base - - name: storage/lvm/volume - lvm_volume: - vg: "{{ host_name }}" - lv: www - size: 10G - fs: ext4 - dest: /srv/www + - name: storage/lvm/base post_tasks: - name: create base directory for static www content file: diff --git a/spreadspace/sgg-icecast.yml b/spreadspace/sgg-icecast.yml index 4c6d61c4..d9126e38 100644 --- a/spreadspace/sgg-icecast.yml +++ b/spreadspace/sgg-icecast.yml @@ -8,18 +8,12 @@ - role: core/zsh - role: core/ntp - role: apt-repo/spreadspace + - name: storage/lvm/base - role: kubernetes/base - role: kubernetes/standalone/base - role: streaming/icecast - role: x509/acmetool/base - role: nginx/base - - name: storage/lvm/volume - lvm_volume: - vg: "{{ host_name }}" - lv: www - size: 1G - fs: ext4 - dest: /srv/www post_tasks: - name: create base directory for static www content file: |