diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 01bac8ec56..7831e88cc9 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -642,6 +642,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 3af9568b39..c436963d22 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"