From 716899ffba802e5438b1829f575f343efb0deaeb Mon Sep 17 00:00:00 2001 From: Simon Dodsley Date: Mon, 7 Nov 2022 11:23:08 -0500 Subject: [PATCH] Add NVMe-RoCE Cinder driver support for Pure Storage From OpenStack Zed the Pure Storage Cinder driver supports NVMe-RoCE as a dataplane protocol. This patch adds support for this new driver type. Also amend a couple of documentation formatting typos. Change-Id: Ic1eed7d19e9b583e22419625c92ac3507ea4614d --- ansible/group_vars/all.yml | 1 + ansible/roles/cinder/defaults/main.yml | 2 ++ ansible/roles/cinder/tasks/precheck.yml | 1 + ansible/roles/cinder/templates/cinder.conf.j2 | 8 ++++++++ .../reference/storage/cinder-guide-pure.rst | 20 ++++++++++++++++--- doc/source/reference/storage/cinder-guide.rst | 3 +++ etc/kolla/globals.yml | 1 + 7 files changed, 33 insertions(+), 3 deletions(-) diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 648537ad3e..f188f8aee0 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -641,6 +641,7 @@ enable_cinder_backend_nfs: "no" enable_cinder_backend_quobyte: "no" enable_cinder_backend_pure_iscsi: "no" enable_cinder_backend_pure_fc: "no" +enable_cinder_backend_pure_roce: "no" enable_cloudkitty: "no" enable_collectd: "no" enable_cyborg: "no" diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml index d7d52cc106..26d3b13639 100644 --- a/ansible/roles/cinder/defaults/main.yml +++ b/ansible/roles/cinder/defaults/main.yml @@ -245,6 +245,8 @@ cinder_backends: 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 }}" cinder_backend_ceph_name: "rbd-1" cinder_backend_lvm_name: "lvm-1" diff --git a/ansible/roles/cinder/tasks/precheck.yml b/ansible/roles/cinder/tasks/precheck.yml index 273a87b369..7cd8825d7c 100644 --- a/ansible/roles/cinder/tasks/precheck.yml +++ b/ansible/roles/cinder/tasks/precheck.yml @@ -40,6 +40,7 @@ - not enable_cinder_backend_quobyte | bool - not enable_cinder_backend_pure_iscsi | bool - not enable_cinder_backend_pure_fc | bool + - not enable_cinder_backend_pure_roce | 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 565ab44376..0698f5e02a 100644 --- a/ansible/roles/cinder/templates/cinder.conf.j2 +++ b/ansible/roles/cinder/templates/cinder.conf.j2 @@ -204,6 +204,14 @@ san_ip = {{ pure_san_ip }} pure_api_token = {{ pure_api_token }} {% endif %} +{% if enable_cinder_backend_pure_roce | bool %} +[{{ cinder_backend_pure_roce_name }}] +volume_backend_name = {{ pure_roce_backend }} +volume_driver = cinder.volume.drivers.pure.PureNVMEDriver +san_ip = {{ pure_san_ip }} +pure_api_token = {{ pure_api_token }} +{% 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-pure.rst b/doc/source/reference/storage/cinder-guide-pure.rst index 306ee5b496..bd93ac48e6 100644 --- a/doc/source/reference/storage/cinder-guide-pure.rst +++ b/doc/source/reference/storage/cinder-guide-pure.rst @@ -25,6 +25,20 @@ configure the ``FlashArray FC`` Cinder driver in ``/etc/kolla/globals.yml``. .. end +To use the ``Pure Storage FlashArray NVMe-RoCE`` Cinder backend, enable and +configure the ``FlashArray NVMe-RoCE`` Cinder driver in +``/etc/kolla/globals.yml``. + +.. code-block:: yaml + + enable_cinder_backend_pure_roce: "yes" + +.. end + +.. note:: + + The NVMe-RoCE driver is only supported from OpenStack Zed and later. + It is important to note that you cannot mix iSCSI and FC Pure Storage FlashArray drivers in the same OpenStack cluster. @@ -34,16 +48,16 @@ Also set the values for the following parameters in ``/etc/kolla/globals.yml``: - ``pure_san_ip`` For details on how to use these parameters, refer to the -`Pure Storage Cinder Reference Guide__`. +`Pure Storage Cinder Reference Guide `_. There are numerous other parameters that can be set for this driver and these are detailed in the above link. If you wish to use any of these parameters then refer to the -`Service Configuration__` +`Service Configuration `_ documentation for instructions using the INI update strategy. The use of this backend requires that the ``purestorage`` SDK package is installed in the ``cinder-volume`` container. To do this follow the steps -outlined in the `kolla image building guide__` +outlined in the `kolla image building guide `_ particularly the ``Package Customisation`` and ``Custom Repos`` sections. diff --git a/doc/source/reference/storage/cinder-guide.rst b/doc/source/reference/storage/cinder-guide.rst index 56221d322f..18f36d5f77 100644 --- a/doc/source/reference/storage/cinder-guide.rst +++ b/doc/source/reference/storage/cinder-guide.rst @@ -247,6 +247,9 @@ that appears in cinder.conf: * - Pure Storage FlashArray for OpenStack - cinder_backend_pure_fc_name - Pure-FlashArray-fc + * - Pure Storage FlashArray for OpenStack + - cinder_backend_pure_roce_name + - Pure-FlashArray-roce These are the names you use when `configuring `_ diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 63ca05575e..6928e91acc 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -315,6 +315,7 @@ workaround_ansible_issue_8743: yes #enable_cinder_backend_quobyte: "no" #enable_cinder_backend_pure_iscsi: "no" #enable_cinder_backend_pure_fc: "no" +#enable_cinder_backend_pure_roce: "no" #enable_cloudkitty: "no" #enable_collectd: "no" #enable_cyborg: "no"