From cacb38b03fb10897e141e2960dfcc03a536162d3 Mon Sep 17 00:00:00 2001 From: John Garbutt Date: Thu, 4 Sep 2025 13:40:09 +0100 Subject: [PATCH 1/4] WIP: VAST Manila driver Add support for the VAST manila dirver. Change-Id: I7bb567eb67a0a66575386fe2d957c8a5d1d6e913 Signed-off-by: John Garbutt --- ansible/group_vars/all.yml | 1 + ansible/roles/manila/defaults/main.yml | 5 +++ .../manila/templates/manila-share.conf.j2 | 13 +++++++ doc/source/reference/storage/index.rst | 1 + .../reference/storage/manila-vast-guide.rst | 37 +++++++++++++++++++ etc/kolla/globals.yml | 8 ++++ .../add-vast-manila-614251e3a21e1d29.yaml | 4 ++ 7 files changed, 69 insertions(+) create mode 100644 doc/source/reference/storage/manila-vast-guide.rst create mode 100644 releasenotes/notes/add-vast-manila-614251e3a21e1d29.yaml diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 9c2262325e..e8a1bee53c 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -891,6 +891,7 @@ enable_manila_backend_cephfs_native: "no" enable_manila_backend_cephfs_nfs: "no" enable_manila_backend_glusterfs_nfs: "no" enable_manila_backend_flashblade: "no" +enable_manila_backend_vast: "no" enable_mariabackup: "no" enable_masakari: "no" enable_masakari_instancemonitor: "{{ enable_masakari | bool }}" diff --git a/ansible/roles/manila/defaults/main.yml b/ansible/roles/manila/defaults/main.yml index 198b3def59..88afa81976 100644 --- a/ansible/roles/manila/defaults/main.yml +++ b/ansible/roles/manila/defaults/main.yml @@ -242,6 +242,11 @@ manila_backends: enabled: "{{ enable_manila_backend_flashblade | bool }}" protocols: - "NFS" + - name: "vast" + driver: "vast" + enabled: "{{ enable_manila_backend_vast | bool }}" + protocols: + - "NFS" manila_ceph_backends: diff --git a/ansible/roles/manila/templates/manila-share.conf.j2 b/ansible/roles/manila/templates/manila-share.conf.j2 index ee1deb3413..52fc0785fc 100644 --- a/ansible/roles/manila/templates/manila-share.conf.j2 +++ b/ansible/roles/manila/templates/manila-share.conf.j2 @@ -172,5 +172,18 @@ glusterfs_servers = {% for ip in manila_glusterfs_servers %}{% if manila_gluster {% if manila_glusterfs_ssh_password is defined %}glusterfs_server_password = {{ manila_glusterfs_ssh_password }}{% endif %} {% endif %} +{% if enable_manila_backend_vast | bool %} +[vast1] +share_backend_name = VAST1 +share_driver = manila.share.drivers.vastdata.driver.VASTShareDriver +snapshot_support = true +driver_handles_share_servers = false +vast_mgmt_host = {{ manila_vast_mgmt_host }} +vast_mgmt_user = {{ manila_vast_mgmt_user }} +vast_mgmt_password = {{ manila_vast_mgmt_password }} +vast_vippool_name = {{ manila_vast_vippool_name }} +vast_root_export = {{ manila_vast_root_export | default("manila") }} +{% endif %} + [oslo_concurrency] lock_path = /var/lib/manila/tmp diff --git a/doc/source/reference/storage/index.rst b/doc/source/reference/storage/index.rst index 42b35f9e3a..e403f5806a 100644 --- a/doc/source/reference/storage/index.rst +++ b/doc/source/reference/storage/index.rst @@ -16,3 +16,4 @@ supported by kolla. manila-guide manila-hnas-guide manila-pure-guide + manila-vast-guide diff --git a/doc/source/reference/storage/manila-vast-guide.rst b/doc/source/reference/storage/manila-vast-guide.rst new file mode 100644 index 0000000000..06e5cba019 --- /dev/null +++ b/doc/source/reference/storage/manila-vast-guide.rst @@ -0,0 +1,37 @@ +.. _manila-vast-guide: + +========================================================== +VAST Manila Driver for OpenStack +========================================================== + +VAST Share Driver integrates OpenStack with VAST Data's Storage System. +Shares in the Shared File System service are mapped to directories +on VAST, and are accessed via NFS protocol using a Virtual IP Pool. + +For more details on how to use the VAST driver, refer to the +`VAST share driver docs `_. + +Configuration on Kolla deployment +--------------------------------- + +Enable Manila and the VAST driver in ``/etc/kolla/globals.yml``: + +.. code-block:: yaml + + enable_manila: "yes" + enable_manila_backend_vast: "yes" + +In ``/etc/kolla/globals.yml`` uncomment and set: + +.. code-block:: yaml + + manila_vast_mgmt_host: "" + manila_vast_mgmt_user: "" + vast_mgmt_password: "" + manila_vast_vippool_name: "" + +The driver assumes tenant networks that which to mount +their VAST backed NFS file shares are able to route to the +VAST virtual IP pool you have chosen. +By default, the driver will create shares under +``/manila`` base export on VAST. diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 8a5d645472..9ffb146c59 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -396,6 +396,7 @@ workaround_ansible_issue_8743: yes #enable_manila_backend_cephfs_nfs: "no" #enable_manila_backend_glusterfs_nfs: "no" #enable_manila_backend_flashblade: "no" +#enable_manila_backend_vast: "no" #enable_mariabackup: "no" #enable_masakari: "no" #enable_mistral: "no" @@ -718,6 +719,13 @@ workaround_ansible_issue_8743: yes #manila_glusterfs_target: #manila_glusterfs_mount_point_base: +# Vast configuration for Manila +#manila_vast_mgmt_host: +#manila_vast_mgmt_user: +#manila_vast_mgmt_password: +#manila_vast_vippool_name: +#vast_root_export: + ################################### # VMware - OpenStack VMware support ################################### diff --git a/releasenotes/notes/add-vast-manila-614251e3a21e1d29.yaml b/releasenotes/notes/add-vast-manila-614251e3a21e1d29.yaml new file mode 100644 index 0000000000..cce20d8eb4 --- /dev/null +++ b/releasenotes/notes/add-vast-manila-614251e3a21e1d29.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Added support for the VAST storage backend in Manila. From 3f9576def166cbe4b65e1f51c47412ee751f9196 Mon Sep 17 00:00:00 2001 From: John Garbutt Date: Thu, 4 Sep 2025 14:55:40 +0100 Subject: [PATCH 2/4] WIP: Add support for VAST cinder driver This hasn't yet been merged in cinder, but is here for visibility: Depends-on: https://review.opendev.org/c/openstack/cinder/+/939005 Change-Id: I1e35c0c214dc3d10ef2ee31a213b05c499319387 Signed-off-by: John Garbutt --- ansible/group_vars/all.yml | 1 + ansible/roles/cinder/defaults/main.yml | 3 +++ ansible/roles/cinder/tasks/precheck.yml | 1 + ansible/roles/cinder/templates/cinder.conf.j2 | 12 ++++++++++++ doc/source/reference/storage/cinder-guide.rst | 3 +++ etc/kolla/globals.yml | 1 + .../notes/add-vast-cinder-ff908a6ec0077508.yaml | 4 ++++ 7 files changed, 25 insertions(+) create mode 100644 releasenotes/notes/add-vast-cinder-ff908a6ec0077508.yaml diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index e8a1bee53c..5002160c57 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -842,6 +842,7 @@ enable_cinder_backend_pure_iscsi: "no" enable_cinder_backend_pure_fc: "no" enable_cinder_backend_pure_roce: "no" enable_cinder_backend_pure_nvme_tcp: "no" +enable_cinder_backend_vast: "no" enable_cinder_backend_lightbits: "no" enable_cloudkitty: "no" enable_collectd: "no" diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml index a1b0f321f4..1a6f5f0d84 100644 --- a/ansible/roles/cinder/defaults/main.yml +++ b/ansible/roles/cinder/defaults/main.yml @@ -261,6 +261,8 @@ cinder_backends: enabled: "{{ enable_cinder_backend_pure_nvme_tcp | bool }}" - name: "{{ cinder_backend_lightbits_name }}" enabled: "{{ enable_cinder_backend_lightbits | bool }}" + - name: "{{ cinder_backend_vast_name }}" + enabled: "{{ enable_cinder_backend_vast | bool }}" cinder_backend_ceph_name: "rbd-1" cinder_backend_lvm_name: "lvm-1" @@ -273,6 +275,7 @@ 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_backend_vast_name: "vast-nvme-tcp" cinder_ceph_backends: - name: "{{ cinder_backend_ceph_name }}" diff --git a/ansible/roles/cinder/tasks/precheck.yml b/ansible/roles/cinder/tasks/precheck.yml index d722139de5..c1243f3b0c 100644 --- a/ansible/roles/cinder/tasks/precheck.yml +++ b/ansible/roles/cinder/tasks/precheck.yml @@ -44,6 +44,7 @@ - not enable_cinder_backend_pure_roce | bool - not enable_cinder_backend_pure_nvme_tcp | bool - not enable_cinder_backend_lightbits | bool + - not enable_cinder_backend_vast | bool - name: Checking LVM volume group exists for Cinder become: true diff --git a/ansible/roles/cinder/templates/cinder.conf.j2 b/ansible/roles/cinder/templates/cinder.conf.j2 index 9543086ce2..2ecfcb466a 100644 --- a/ansible/roles/cinder/templates/cinder.conf.j2 +++ b/ansible/roles/cinder/templates/cinder.conf.j2 @@ -248,6 +248,18 @@ lightos_skip_ssl_verify = {{ lightbits_skip_ssl_verify }} lightos_jwt = {{ lightbits_JWT }} {% endif %} +{% if enable_cinder_backend_vast | bool %} +[{{ cinder_backend_vast_name }}] +volume_driver = cinder.volume.drivers.vastdata.driver.VASTVolumeDriver +volume_backend_name = {{ vast_backend_name }} +vast_vippool_name = {{ vast_vippool_name }} +vast_subsystem = {{ vast_subsystem }} +san_ip = {{ vast_ip }} +san_api_port = {{ vast_port }} +san_login = {{ vast_username }} +san_password = {{ vast_password }} +{% endif %} + [privsep_entrypoint] helper_command=sudo cinder-rootwrap /etc/cinder/rootwrap.conf privsep-helper --config-file /etc/cinder/cinder.conf diff --git a/doc/source/reference/storage/cinder-guide.rst b/doc/source/reference/storage/cinder-guide.rst index cd674d8cc2..4e85fc9a56 100644 --- a/doc/source/reference/storage/cinder-guide.rst +++ b/doc/source/reference/storage/cinder-guide.rst @@ -299,6 +299,9 @@ that appears in cinder.conf: * - Lightbits Labs storage backend - cinder_backend_lightbits_name - Lightbits-NVMe-TCP + * - VAST storage backend + - cinder_backend_vast_name + - vast-nvme-tcp These are the names you use when `configuring `_ diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 9ffb146c59..acc8d0e242 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -351,6 +351,7 @@ workaround_ansible_issue_8743: yes #enable_cinder_backend_pure_roce: "no" #enable_cinder_backend_pure_nvme_tcp: "no" #enable_cinder_backend_lightbits: "no" +#enable_cinder_backend_vast: "no" #enable_cloudkitty: "no" #enable_collectd: "no" #enable_cyborg: "no" diff --git a/releasenotes/notes/add-vast-cinder-ff908a6ec0077508.yaml b/releasenotes/notes/add-vast-cinder-ff908a6ec0077508.yaml new file mode 100644 index 0000000000..2b7123ec4f --- /dev/null +++ b/releasenotes/notes/add-vast-cinder-ff908a6ec0077508.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Add support for VAST cinder driver. From 8c34479ab39bb998e43023c0bff0c198370eef58 Mon Sep 17 00:00:00 2001 From: John Garbutt Date: Thu, 4 Sep 2025 17:03:03 +0100 Subject: [PATCH 3/4] Fix the vast manila backend name Change-Id: Ic324171573001bf67477a78a564c0e95da5aebaa --- ansible/roles/manila/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/manila/defaults/main.yml b/ansible/roles/manila/defaults/main.yml index 88afa81976..a57e6ca64b 100644 --- a/ansible/roles/manila/defaults/main.yml +++ b/ansible/roles/manila/defaults/main.yml @@ -242,7 +242,7 @@ manila_backends: enabled: "{{ enable_manila_backend_flashblade | bool }}" protocols: - "NFS" - - name: "vast" + - name: "vast1" driver: "vast" enabled: "{{ enable_manila_backend_vast | bool }}" protocols: From 21216fe723553911ff0e7fc0f55b8f291086d902 Mon Sep 17 00:00:00 2001 From: John Garbutt Date: Thu, 4 Sep 2025 14:55:40 +0100 Subject: [PATCH 4/4] Fix up vast cinder config Change-Id: I99df4a344524673cc132a9486c74458a6aab22e6 --- ansible/roles/cinder/templates/cinder.conf.j2 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ansible/roles/cinder/templates/cinder.conf.j2 b/ansible/roles/cinder/templates/cinder.conf.j2 index 2ecfcb466a..a996769b90 100644 --- a/ansible/roles/cinder/templates/cinder.conf.j2 +++ b/ansible/roles/cinder/templates/cinder.conf.j2 @@ -251,13 +251,13 @@ lightos_jwt = {{ lightbits_JWT }} {% if enable_cinder_backend_vast | bool %} [{{ cinder_backend_vast_name }}] volume_driver = cinder.volume.drivers.vastdata.driver.VASTVolumeDriver -volume_backend_name = {{ vast_backend_name }} -vast_vippool_name = {{ vast_vippool_name }} -vast_subsystem = {{ vast_subsystem }} -san_ip = {{ vast_ip }} -san_api_port = {{ vast_port }} -san_login = {{ vast_username }} -san_password = {{ vast_password }} +volume_backend_name = {{ cinder_backend_vast_name }} +vast_vippool_name = {{ cinder_vast_vippool_name }} +vast_subsystem = {{ cinder_vast_subsystem }} +san_ip = {{ cinder_vast_ip }} +san_api_port = {{ cinder_vast_port }} +san_login = {{ cinder_vast_username }} +san_password = {{ cinder_vast_password }} {% endif %} [privsep_entrypoint]