From fae8ffba0b2964370ff9028f7c37e44356b5caa5 Mon Sep 17 00:00:00 2001 From: Dong Ma Date: Thu, 14 Nov 2024 22:09:56 +0800 Subject: [PATCH 1/2] Setup a lvm role to update lvm configure --- roles/lvm/tasks/main.yml | 37 +++++++++++++++++++++++++++++++++ roles/lvm/templates/lvm.conf.j2 | 31 +++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 roles/lvm/tasks/main.yml create mode 100644 roles/lvm/templates/lvm.conf.j2 diff --git a/roles/lvm/tasks/main.yml b/roles/lvm/tasks/main.yml new file mode 100644 index 000000000..f6e5e862c --- /dev/null +++ b/roles/lvm/tasks/main.yml @@ -0,0 +1,37 @@ +# Copyright (c) 2023 VEXXHOST, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +- name: Discover lvm devices + shell: >- + /sbin/pvdisplay | awk '/PV\ Name/ {print $3}' | sed 's/\/dev\///g' + register: lvm_devices + changed_when: lvm_devices.rc != 0 + failed_when: false + +- name: Ensure "/etc/lvm" directory + file: + state: "directory" + path: "/etc/lvm" + mode: "0755" + when: lvm_devices.rc == 0 + +- name: Drop lvm Config + template: + src: "lvm.conf.j2" + dest: "/etc/lvm/lvm.conf" + owner: "root" + group: "root" + backup: "yes" + mode: "0644" + when: lvm_devices.rc == 0 diff --git a/roles/lvm/templates/lvm.conf.j2 b/roles/lvm/templates/lvm.conf.j2 new file mode 100644 index 000000000..5b2793faf --- /dev/null +++ b/roles/lvm/templates/lvm.conf.j2 @@ -0,0 +1,31 @@ +{% set used_lvm_devices = [] %} +{% set cinder_lvm_devices_filter_override = [] %} +{% if cinder_lvm_devices_filter_override|length > 0 %} + {% set used_lvm_devices = cinder_lvm_devices_filter_override %} +{% else %} + {% set lv_devices = lvm_devices.stdout.split('\n') %} + {% if lv_devices|length > 0 %} + {% for net in lv_devices %} + {% if net != '' %} + {% set lv_device = '"a/' + net + '/"' %} + {% if used_lvm_devices.append(lv_device) %}{% endif %} + {% endif %} + {% endfor %} + {% endif %} + +# Ansible Discovered LVM Devices {{ lv_devices }} +{% endif %} + +{% if used_lvm_devices|length <= 0 %} + {# If there are no LVM devices present, allow all devices to be scanned #} + {% if used_lvm_devices.append('"a/.*/"') %}{% endif %} +{% else %} + {# Append 'loop.*' to the list to help with AIO deployments. #} + {% if used_lvm_devices.append('"a/loop.*/"') %}{% endif %} + {# Disable scanning any other devices than the ones listed. #} + {% if used_lvm_devices.append('"r/.*/"') %}{% endif %} +{% endif %} + +devices { + filter = [ {{ used_lvm_devices|join(', ') }} ] +} From c6f658a9fe379f60cef831c5d06bd00256096830 Mon Sep 17 00:00:00 2001 From: Dong Ma Date: Mon, 18 Nov 2024 16:17:41 +0800 Subject: [PATCH 2/2] Fix the linters error and add README.md --- roles/lvm/README.md | 1 + roles/lvm/tasks/main.yml | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 roles/lvm/README.md diff --git a/roles/lvm/README.md b/roles/lvm/README.md new file mode 100644 index 000000000..e78816a87 --- /dev/null +++ b/roles/lvm/README.md @@ -0,0 +1 @@ +# `lvm` diff --git a/roles/lvm/tasks/main.yml b/roles/lvm/tasks/main.yml index f6e5e862c..3b46c4c95 100644 --- a/roles/lvm/tasks/main.yml +++ b/roles/lvm/tasks/main.yml @@ -13,21 +13,22 @@ # under the License. - name: Discover lvm devices - shell: >- + ansible.builtin.shell: | + set -o pipefail /sbin/pvdisplay | awk '/PV\ Name/ {print $3}' | sed 's/\/dev\///g' register: lvm_devices changed_when: lvm_devices.rc != 0 failed_when: false - name: Ensure "/etc/lvm" directory - file: + ansible.builtin.file: state: "directory" path: "/etc/lvm" mode: "0755" when: lvm_devices.rc == 0 - name: Drop lvm Config - template: + ansible.builtin.template: src: "lvm.conf.j2" dest: "/etc/lvm/lvm.conf" owner: "root"