From 001ceb044c654733fd4327fc98af9d3db95dbcd1 Mon Sep 17 00:00:00 2001 From: Kari Häkkinen Date: Wed, 22 Jul 2026 15:24:36 +0300 Subject: cinder: Define backend variables in group_vars/all MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The iscsi role derives the cinder-volume/backup inventory groups from cinder_enabled_backends, but that variable (along with cinder_backends, cinder_ceph_backends and the cinder_backend_*_name variables) was only defined in the cinder role defaults. The iscsi play runs before the cinder play, so the variable is out of scope there and prechecks (and deploy/reconfigure) fail with: 'cinder_enabled_backends' is undefined when a Cinder iSCSI/LVM backend is enabled. Move these backend variable definitions to group_vars/all/cinder.yml so they are in scope for every play, including the iscsi role. This also keeps all cinder backend definitions - including the cinder-backup ceph backend (cinder_backup_backend_ceph_name, cinder_backup_ceph_backend) - in one place. All of their dependencies (the enable_cinder_backend_* flags, cinder_backend_ceph and the ceph_* variables) are already global, and globals.yml is applied as extra-vars, so operator overrides continue to take precedence. Partial-Bug: #2158120 Change-Id: I765f45814382377332ba9f01f1bc52bd4e046170 Signed-off-by: Kari Häkkinen (cherry picked from commit 2df2ee6e49d0fd58b1781c0b490b019e1936e96b) --- ansible/group_vars/all/cinder.yml | 57 ++++++++++++++++++++++ ansible/roles/cinder/defaults/main.yml | 55 ++------------------- ...i-cinder-enabled-backends-f482e5454dc8fa87.yaml | 10 ++++ 3 files changed, 72 insertions(+), 50 deletions(-) create mode 100644 releasenotes/notes/fix-iscsi-cinder-enabled-backends-f482e5454dc8fa87.yaml diff --git a/ansible/group_vars/all/cinder.yml b/ansible/group_vars/all/cinder.yml index 9418adcc9..a11b19dd8 100644 --- a/ansible/group_vars/all/cinder.yml +++ b/ansible/group_vars/all/cinder.yml @@ -11,6 +11,63 @@ enable_cinder_backend_pure_roce: false enable_cinder_backend_pure_nvme_tcp: false enable_cinder_backend_lightbits: false +################################# +# Cinder backends +################################# +# NOTE: These are defined here (rather than in the cinder role defaults) so that +# they are in scope for other roles - notably iscsi, whose play runs before the +# cinder play and derives the cinder-volume/backup inventory groups from +# cinder_enabled_backends. +cinder_backend_ceph_name: "rbd-1" +cinder_backend_lvm_name: "lvm-1" +cinder_backend_nfs_name: "nfs-1" +cinder_backend_quobyte_name: "QuobyteHD" +cinder_backend_pure_iscsi_name: "Pure-FlashArray-iscsi" +cinder_backend_pure_fc_name: "Pure-FlashArray-fc" +cinder_backend_pure_roce_name: "Pure-FlashArray-roce" +cinder_backend_pure_nvme_tcp_name: "Pure-FlashArray-nvme-tcp" +cinder_backend_lightbits_name: "Lightbits-NVMe-TCP" + +cinder_backends: + - name: "{{ cinder_backend_lvm_name }}" + enabled: "{{ enable_cinder_backend_lvm | bool }}" + - name: "{{ cinder_backend_nfs_name }}" + enabled: "{{ enable_cinder_backend_nfs | bool }}" + - name: "{{ cinder_backend_quobyte_name }}" + enabled: "{{ enable_cinder_backend_quobyte | bool }}" + - name: "{{ cinder_backend_pure_iscsi_name }}" + enabled: "{{ enable_cinder_backend_pure_iscsi | bool }}" + - name: "{{ cinder_backend_pure_fc_name }}" + enabled: "{{ enable_cinder_backend_pure_fc | bool }}" + - name: "{{ cinder_backend_pure_roce_name }}" + enabled: "{{ enable_cinder_backend_pure_roce | bool }}" + - name: "{{ cinder_backend_pure_nvme_tcp_name }}" + enabled: "{{ enable_cinder_backend_pure_nvme_tcp | bool }}" + - name: "{{ cinder_backend_lightbits_name }}" + enabled: "{{ enable_cinder_backend_lightbits | bool }}" + +cinder_ceph_backends: + - name: "{{ cinder_backend_ceph_name }}" + backend_name: "{{ cinder_backend_ceph_name }}" + cluster: "{{ ceph_cluster }}" + user: "{{ ceph_cinder_user }}" + pool: "{{ ceph_cinder_pool_name }}" + enabled: "{{ cinder_backend_ceph | bool }}" + +cinder_backup_backend_ceph_name: "rbd-1" +cinder_backup_ceph_backend: >- + {{ + cinder_ceph_backends | + selectattr('name', 'equalto', cinder_backup_backend_ceph_name) | list | first | + combine({'pool': ceph_cinder_backup_pool_name, 'user': ceph_cinder_backup_user}) + }} + +cinder_enabled_backends: >- + {{ + cinder_backends | selectattr('enabled', 'equalto', true) | list + + cinder_ceph_backends | selectattr('enabled', 'equalto', true) | list + }} + ################################# # Cinder options ################################# diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml index 37f7f7aab..c1f051c97 100644 --- a/ansible/roles/cinder/defaults/main.yml +++ b/ansible/roles/cinder/defaults/main.yml @@ -253,58 +253,13 @@ cinder_api_workers: "{{ openstack_service_workers }}" #################### # Cinder #################### -cinder_backends: - - name: "{{ cinder_backend_lvm_name }}" - enabled: "{{ enable_cinder_backend_lvm | bool }}" - - name: "{{ cinder_backend_nfs_name }}" - enabled: "{{ enable_cinder_backend_nfs | bool }}" - - name: "{{ cinder_backend_quobyte_name }}" - enabled: "{{ enable_cinder_backend_quobyte | bool }}" - - name: "{{ cinder_backend_pure_iscsi_name }}" - enabled: "{{ enable_cinder_backend_pure_iscsi | bool }}" - - name: "{{ cinder_backend_pure_fc_name }}" - enabled: "{{ enable_cinder_backend_pure_fc | bool }}" - - name: "{{ cinder_backend_pure_roce_name }}" - enabled: "{{ enable_cinder_backend_pure_roce | bool }}" - - name: "{{ cinder_backend_pure_nvme_tcp_name }}" - enabled: "{{ enable_cinder_backend_pure_nvme_tcp | bool }}" - - name: "{{ cinder_backend_lightbits_name }}" - enabled: "{{ enable_cinder_backend_lightbits | bool }}" - -cinder_backend_ceph_name: "rbd-1" -cinder_backend_lvm_name: "lvm-1" -cinder_backend_nfs_name: "nfs-1" -cinder_backend_quobyte_name: "QuobyteHD" -cinder_backend_pure_iscsi_name: "Pure-FlashArray-iscsi" -cinder_backend_pure_fc_name: "Pure-FlashArray-fc" -cinder_backend_pure_roce_name: "Pure-FlashArray-roce" -cinder_backend_pure_nvme_tcp_name: "Pure-FlashArray-nvme-tcp" -cinder_backend_lightbits_name: "Lightbits-NVMe-TCP" - -cinder_ceph_backends: - - name: "{{ cinder_backend_ceph_name }}" - backend_name: "{{ cinder_backend_ceph_name }}" - cluster: "{{ ceph_cluster }}" - user: "{{ ceph_cinder_user }}" - pool: "{{ ceph_cinder_pool_name }}" - enabled: "{{ cinder_backend_ceph | bool }}" - -cinder_backup_backend_ceph_name: "rbd-1" -cinder_backup_ceph_backend: >- - {{ - cinder_ceph_backends | - selectattr('name', 'equalto', cinder_backup_backend_ceph_name) | list | first | - combine({'pool': ceph_cinder_backup_pool_name, 'user': ceph_cinder_backup_user}) - }} - +# NOTE: the cinder backend definitions (cinder_backends, cinder_ceph_backends, +# cinder_enabled_backends, cinder_backup_backend_ceph_name, +# cinder_backup_ceph_backend and the cinder_backend_*_name variables) are +# defined in group_vars/all/cinder.yml so that all cinder backend definitions +# live in one place and are in scope for the iscsi role. skip_cinder_backend_check: false -cinder_enabled_backends: >- - {{ - cinder_backends | selectattr('enabled', 'equalto', true) | list - + cinder_ceph_backends | selectattr('enabled', 'equalto', true) | list - }} - #################### # Notification #################### diff --git a/releasenotes/notes/fix-iscsi-cinder-enabled-backends-f482e5454dc8fa87.yaml b/releasenotes/notes/fix-iscsi-cinder-enabled-backends-f482e5454dc8fa87.yaml new file mode 100644 index 000000000..3945ee4da --- /dev/null +++ b/releasenotes/notes/fix-iscsi-cinder-enabled-backends-f482e5454dc8fa87.yaml @@ -0,0 +1,10 @@ +--- +fixes: + - | + Fixes ``kolla-ansible prechecks`` (and deploy/reconfigure) failing with + ``'cinder_enabled_backends' is undefined`` in the ``iscsi`` role when a + Cinder iSCSI/LVM backend is enabled. The ``cinder_enabled_backends`` and + related backend variables are now defined in ``group_vars/all`` so that + they are in scope for the ``iscsi`` role, whose play runs before the + ``cinder`` play. `LP#2158120 + `__ -- cgit v1.2.3