diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 95631286ba..486c5f8689 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -614,6 +614,8 @@ enable_cinder_backend_iscsi: "{{ enable_cinder_backend_lvm | bool }}" enable_cinder_backend_lvm: "no" enable_cinder_backend_nfs: "no" enable_cinder_backend_quobyte: "no" +enable_cinder_backend_pure_iscsi: "no" +enable_cinder_backend_pure_fc: "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 568cd10d7b..6d17d64e28 100644 --- a/ansible/roles/cinder/defaults/main.yml +++ b/ansible/roles/cinder/defaults/main.yml @@ -226,6 +226,10 @@ cinder_backends: enabled: "{{ cinder_backend_vmware_vstorage_object | bool }}" - name: "QuobyteHD" enabled: "{{ enable_cinder_backend_quobyte | bool }}" + - name: "Pure-FlashArray-iscsi" + enabled: "{{ enable_cinder_backend_pure_iscsi | bool }}" + - name: "Pure-FlashArray-fc" + enabled: "{{ enable_cinder_backend_pure_fc | bool }}" skip_cinder_backend_check: False @@ -259,6 +263,14 @@ quobyte_storage_host: quobyte_storage_volume: +################################ +# Pure FlashArray Storage Driver +################################ +pure_iscsi_backend: "pure_iscsi_backend" +pure_fc_backend: "pure_fc_backend" +pure_api_token: +pure_san_ip: + #################### # Kolla #################### diff --git a/ansible/roles/cinder/tasks/precheck.yml b/ansible/roles/cinder/tasks/precheck.yml index 9c937ffc31..0daba33867 100644 --- a/ansible/roles/cinder/tasks/precheck.yml +++ b/ansible/roles/cinder/tasks/precheck.yml @@ -37,6 +37,8 @@ - not cinder_backend_vmwarevc_vmdk | bool - not cinder_backend_vmware_vstorage_object | bool - not enable_cinder_backend_quobyte | bool + - not enable_cinder_backend_pure_iscsi | bool + - not enable_cinder_backend_pure_fc | 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 3eaad839ff..51116adaf0 100644 --- a/ansible/roles/cinder/templates/cinder.conf.j2 +++ b/ansible/roles/cinder/templates/cinder.conf.j2 @@ -196,6 +196,22 @@ volume_driver = cinder.volume.drivers.quobyte.QuobyteDriver quobyte_volume_url = quobyte://{{ quobyte_storage_host }}/{{ quobyte_storage_volume }} {% endif %} +{% if enable_cinder_backend_pure_iscsi | bool %} +[Pure-FlashArray-iscsi] +volume_backend_name = {{ pure_iscsi_backend }} +volume_driver = cinder.volume.drivers.pure.PureISCSIDriver +san_ip = {{ pure_san_ip }} +pure_api_token = {{ pure_api_token }} +{% endif %} + +{% if enable_cinder_backend_pure_fc | bool %} +[Pure-FlashArray-fc] +volume_backend_name = {{ pure_fc_backend }} +volume_driver = cinder.volume.drivers.pure.PureFCDriver +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 new file mode 100644 index 0000000000..306ee5b496 --- /dev/null +++ b/doc/source/reference/storage/cinder-guide-pure.rst @@ -0,0 +1,49 @@ +.. cinder-guide-pure: + +===================================== +Pure Storage FlashArray for OpenStack +===================================== + +Pure Storage FlashArray Cinder Driver +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To use the ``Pure Storage FlashArray iSCSI`` Cinder backend, enable and +configure the ``FlashArray iSCSI`` Cinder driver in ``/etc/kolla/globals.yml``. + +.. code-block:: yaml + + enable_cinder_backend_pure_iscsi: "yes" + +.. end + +To use the ``Pure Storage FlashArray FC`` Cinder backend, enable and +configure the ``FlashArray FC`` Cinder driver in ``/etc/kolla/globals.yml``. + +.. code-block:: yaml + + enable_cinder_backend_pure_fc: "yes" + +.. end + +It is important to note that you cannot mix iSCSI and FC Pure Storage +FlashArray drivers in the same OpenStack cluster. + +Also set the values for the following parameters in ``/etc/kolla/globals.yml``: + +- ``pure_api_token`` +- ``pure_san_ip`` + +For details on how to use these parameters, refer to the +`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__` +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__` +particularly the ``Package Customisation`` and ``Custom Repos`` sections. diff --git a/doc/source/reference/storage/index.rst b/doc/source/reference/storage/index.rst index 4729164675..ae37699e00 100644 --- a/doc/source/reference/storage/index.rst +++ b/doc/source/reference/storage/index.rst @@ -12,6 +12,7 @@ supported by kolla. cinder-guide cinder-guide-hnas cinder-guide-quobyte + cinder-guide-pure manila-guide manila-hnas-guide swift-guide diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 0618a35748..229610f292 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -294,6 +294,8 @@ #enable_cinder_backend_lvm: "no" #enable_cinder_backend_nfs: "no" #enable_cinder_backend_quobyte: "no" +#enable_cinder_backend_pure_iscsi: "no" +#enable_cinder_backend_pure_fc: "no" #enable_cloudkitty: "no" #enable_collectd: "no" #enable_cyborg: "no" diff --git a/releasenotes/notes/add-pure-iscsi-cinder-volume-backend-88000797996e414f.yaml b/releasenotes/notes/add-pure-iscsi-cinder-volume-backend-88000797996e414f.yaml new file mode 100644 index 0000000000..6db26cc95d --- /dev/null +++ b/releasenotes/notes/add-pure-iscsi-cinder-volume-backend-88000797996e414f.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Allow cinder-volume to be configured to use Pure Storage FlashArray + with either the iSCSI or FC driver.