diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 01bac8ec56f29e02bad88eb90363aa639ca79f97..7831e88cc9284aea16c9673b1a9fb968fd7fd603 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 d7d52cc106eab95d233c029efcc44e4f08c142d2..26d3b1363960a1724570deaac818684eae52453c 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 273a87b36975a73a7edd6c9423d85f3e48591d65..7cd8825d7c179e0933b46c1dd75edd9bef41c73b 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 565ab44376ad2976998fe34713c9cb1dcf505cb0..0698f5e02a1cd268c967f16be41671eee0e6ba0f 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 306ee5b49602f951aa02618b6dfbae080a657ec2..bd93ac48e656328e46cba7c5ba19a17e7d15e57d 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<https://docs.openstack.org/cinder/latest/configuration/block-storage/drivers/pure-storage-driver.html>__`. +`Pure Storage Cinder Reference Guide <https://docs.openstack.org/cinder/latest/configuration/block-storage/drivers/pure-storage-driver.html>`_. 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<https://docs.openstack.org/kolla-ansible/latest/admin/advanced-configuration.html#openstack-service-configuration-in-kolla>__` +`Service Configuration <https://docs.openstack.org/kolla-ansible/latest/admin/advanced-configuration.html#openstack-service-configuration-in-kolla>`_ 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<https://docs.openstack.org/kolla/latest/admin/image-building.html>__` +outlined in the `kolla image building guide <https://docs.openstack.org/kolla/latest/admin/image-building.html>`_ 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 56221d322f1c3596ca882d5cb520d86d2ceff583..18f36d5f7738e6402726db78e1e57810052458c0 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 <https://docs.openstack.org/cinder/latest/admin/multi-backend.html#volume-type>`_ diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 3af9568b39bd2544726da2120fde394b3cf423ee..c436963d224aec971cf0ca6b6897814aecdca002 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"