Merge "Add Pure Storage FlashBlade as Manila backend"
This commit is contained in:
@@ -890,6 +890,7 @@ enable_manila_backend_hnas: "no"
|
|||||||
enable_manila_backend_cephfs_native: "no"
|
enable_manila_backend_cephfs_native: "no"
|
||||||
enable_manila_backend_cephfs_nfs: "no"
|
enable_manila_backend_cephfs_nfs: "no"
|
||||||
enable_manila_backend_glusterfs_nfs: "no"
|
enable_manila_backend_glusterfs_nfs: "no"
|
||||||
|
enable_manila_backend_flashblade: "no"
|
||||||
enable_mariabackup: "no"
|
enable_mariabackup: "no"
|
||||||
enable_masakari: "no"
|
enable_masakari: "no"
|
||||||
enable_masakari_instancemonitor: "{{ enable_masakari | bool }}"
|
enable_masakari_instancemonitor: "{{ enable_masakari | bool }}"
|
||||||
|
@@ -237,6 +237,12 @@ manila_backends:
|
|||||||
enabled: "{{ enable_manila_backend_glusterfs_nfs | bool }}"
|
enabled: "{{ enable_manila_backend_glusterfs_nfs | bool }}"
|
||||||
protocols:
|
protocols:
|
||||||
- "NFS"
|
- "NFS"
|
||||||
|
- name: "fb1"
|
||||||
|
driver: "flashblade"
|
||||||
|
enabled: "{{ enable_manila_backend_flashblade | bool }}"
|
||||||
|
protocols:
|
||||||
|
- "NFS"
|
||||||
|
|
||||||
|
|
||||||
manila_ceph_backends:
|
manila_ceph_backends:
|
||||||
- name: "cephfsnative1"
|
- name: "cephfsnative1"
|
||||||
|
@@ -92,6 +92,16 @@ share_backend_name = GENERIC
|
|||||||
policy_file = {{ manila_policy_file }}
|
policy_file = {{ manila_policy_file }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_manila_backend_flashblade | bool %}
|
||||||
|
[fb1]
|
||||||
|
share_backend_name = FB1
|
||||||
|
share_driver = manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver
|
||||||
|
driver_handles_share_servers = False
|
||||||
|
flashblade_mgmt_vip = {{ manila_flashblade_mgmt_vip }}
|
||||||
|
flashblade_data_vip = {{ manila_flashblade_data_vip }}
|
||||||
|
flashblade_api = {{ manila_flashblade_api }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% if enable_manila_backend_hnas | bool %}
|
{% if enable_manila_backend_hnas | bool %}
|
||||||
[hnas1]
|
[hnas1]
|
||||||
share_backend_name = HNAS1
|
share_backend_name = HNAS1
|
||||||
|
@@ -15,3 +15,4 @@ supported by kolla.
|
|||||||
cinder-guide-lightbits
|
cinder-guide-lightbits
|
||||||
manila-guide
|
manila-guide
|
||||||
manila-hnas-guide
|
manila-hnas-guide
|
||||||
|
manila-pure-guide
|
||||||
|
286
doc/source/reference/storage/manila-pure-guide.rst
Normal file
286
doc/source/reference/storage/manila-pure-guide.rst
Normal file
@@ -0,0 +1,286 @@
|
|||||||
|
.. _manila-pure-guide:
|
||||||
|
|
||||||
|
==========================================================
|
||||||
|
Pure Storage FlashBlade File Services Driver for OpenStack
|
||||||
|
==========================================================
|
||||||
|
|
||||||
|
Overview
|
||||||
|
~~~~~~~~
|
||||||
|
The Pure Storage FlashBlade File Services Driver for OpenStack
|
||||||
|
provides NFS Shared File Systems to OpenStack.
|
||||||
|
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
- Pure Storage FlashBlade
|
||||||
|
|
||||||
|
- Purity//FB v2.3.0 or higher
|
||||||
|
|
||||||
|
|
||||||
|
Supported shared file systems and operations
|
||||||
|
--------------------------------------------
|
||||||
|
The driver supports NFS shares.
|
||||||
|
|
||||||
|
The following operations are supported:
|
||||||
|
|
||||||
|
- Create a share.
|
||||||
|
|
||||||
|
- Delete a share.
|
||||||
|
|
||||||
|
- Allow share access.
|
||||||
|
|
||||||
|
- Deny share access.
|
||||||
|
|
||||||
|
- Create a snapshot.
|
||||||
|
|
||||||
|
- Delete a snapshot.
|
||||||
|
|
||||||
|
- Revert from snapshot.
|
||||||
|
|
||||||
|
- Extend a share.
|
||||||
|
|
||||||
|
- Shrink a share.
|
||||||
|
|
||||||
|
|
||||||
|
Preparation and Deployment
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. important ::
|
||||||
|
|
||||||
|
It is mandatory that FlashBlade management interface is reachable from the
|
||||||
|
Shared File System node through the admin network, while the selected
|
||||||
|
EVS data interface is reachable from OpenStack Cloud, such as through
|
||||||
|
Neutron flat networking.
|
||||||
|
|
||||||
|
|
||||||
|
Configuration on Kolla deployment
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Enable Shared File Systems service and FlashBlade driver in
|
||||||
|
``/etc/kolla/globals.yml``
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
enable_manila: "yes"
|
||||||
|
enable_manila_backend_flashblade: "yes"
|
||||||
|
|
||||||
|
Configure the OpenStack networking so it can reach FlashBlade Management
|
||||||
|
interface and FlashBlade Data interface.
|
||||||
|
|
||||||
|
To configure two physical networks, physnet1 and physnet2, with
|
||||||
|
ports eth1 and eth2 associated respectively:
|
||||||
|
|
||||||
|
In ``/etc/kolla/globals.yml`` set:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
neutron_bridge_name: "br-ex,br-ex2"
|
||||||
|
neutron_external_interface: "eth1,eth2"
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
``eth1`` is used to Neutron external interface and ``eth2`` is
|
||||||
|
used to FlashBlade data interface.
|
||||||
|
|
||||||
|
FlashBlade back end configuration
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
In ``/etc/kolla/globals.yml`` uncomment and set:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
manila_flashblade_mgmt_vip: "172.24.44.15"
|
||||||
|
manila_flashblade_data_vip: "172.24.45.22"
|
||||||
|
manila_flashblade_api: "<API token for admin-privilaged user>"
|
||||||
|
|
||||||
|
Configuration on FlashBlade
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Create the FlashBlade data network in Kolla OpenStack:
|
||||||
|
|
||||||
|
List the available tenants:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack project list
|
||||||
|
|
||||||
|
Create a network to the given tenant (service), providing the tenant ID,
|
||||||
|
a name for the network, the name of the physical network over which the
|
||||||
|
virtual network is implemented, and the type of the physical mechanism by
|
||||||
|
which the virtual network is implemented:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack network create --project <SERVICE_ID> \
|
||||||
|
--provider-physical-network physnet2 \
|
||||||
|
--provider-network-type flat \
|
||||||
|
flashblade_network
|
||||||
|
|
||||||
|
*Optional* - List available networks:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack network list
|
||||||
|
|
||||||
|
Create a subnet to the same tenant (service), the gateway IP of this subnet,
|
||||||
|
a name for the subnet, the network ID created before, and the CIDR of
|
||||||
|
subnet:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack subnet create --project <SERVICE_ID> --gateway <GATEWAY> \
|
||||||
|
--subnet_range <SUBNET_CIDR> flashblade_subnet
|
||||||
|
|
||||||
|
*Optional* - List available subnets:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack subnet list
|
||||||
|
|
||||||
|
Add the subnet interface to a router, providing the router ID and subnet
|
||||||
|
ID created before:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack router add submet <ROUTER_ID> <SUBNET_ID>
|
||||||
|
|
||||||
|
Create a share
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Create a default share type before running manila-share service:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack share type create default_share_flashblade False
|
||||||
|
|
||||||
|
+--------------------------------------+--------------------------+------------+------------+--------------------------------------+-------------------------+
|
||||||
|
| ID | Name | visibility | is_default | required_extra_specs | optional_extra_specs |
|
||||||
|
+--------------------------------------+--------------------------+------------+------------+--------------------------------------+-------------------------+
|
||||||
|
| 3e54c8a2-1e50-455e-89a0-96bb52876c35 | default_share_flashblade | public | - | driver_handles_share_servers : False | snapshot_support : True |
|
||||||
|
+--------------------------------------+--------------------------+------------+------------+--------------------------------------+-------------------------+
|
||||||
|
|
||||||
|
Create a NFS share using the FlashBlade back end:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack share create --name <myflashbladeshare \
|
||||||
|
--description "My Manila share" \
|
||||||
|
--share-type default_share_flashblade \
|
||||||
|
NFS 1
|
||||||
|
|
||||||
|
Verify Operation:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack share list
|
||||||
|
|
||||||
|
+--------------------------------------+-------------------+------+-------------+-----------+-----------+--------------------------+-----------------+-------------------+
|
||||||
|
| ID | Name | Size | Share Proto | Status | Is Public | Share Type Name | Host | Availability Zone |
|
||||||
|
+--------------------------------------+-------------------+------+-------------+-----------+-----------+--------------------------+-----------------+-------------------+
|
||||||
|
| 721c0a6d-eea6-41af-8c10-72cd98985203 | myflashbladeshare | 1 | NFS | available | False | default_share_flashblade | control@fb1#FB1 | nova |
|
||||||
|
+--------------------------------------+-------------------+------+-------------+-----------+-----------+--------------------------+-----------------+-------------------+
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack share show myflashbladeshare
|
||||||
|
|
||||||
|
+-----------------------------+-----------------------------------------------------------------+
|
||||||
|
| Property | Value |
|
||||||
|
+-----------------------------+-----------------------------------------------------------------+
|
||||||
|
| status | available |
|
||||||
|
| share_type_name | default_share_flashblade |
|
||||||
|
| description | My Manila share |
|
||||||
|
| availability_zone | nova |
|
||||||
|
| share_network_id | None |
|
||||||
|
| export_locations | |
|
||||||
|
| | path = 172.24.53.1:/shares/45ed6670-688b-4cf0-bfe7-34956648fb84 |
|
||||||
|
| | preferred = False |
|
||||||
|
| | is_admin_only = False |
|
||||||
|
| | id = e81e716f-f1bd-47b2-8a56-2c2f9e33a98e |
|
||||||
|
| | share_instance_id = 45ed6670-688b-4cf0-bfe7-34956648fb84 |
|
||||||
|
| share_server_id | None |
|
||||||
|
| host | control@fb1#FB1 |
|
||||||
|
| access_rules_status | active |
|
||||||
|
| snapshot_id | None |
|
||||||
|
| is_public | False |
|
||||||
|
| task_state | None |
|
||||||
|
| snapshot_support | True |
|
||||||
|
| id | 721c0a6d-eea6-41af-8c10-72cd98985203 |
|
||||||
|
| size | 1 |
|
||||||
|
| user_id | ba7f6d543713488786b4b8cb093e7873 |
|
||||||
|
| name | myflashbladeshare |
|
||||||
|
| share_type | 3e54c8a2-1e50-455e-89a0-96bb52876c35 |
|
||||||
|
| has_replicas | False |
|
||||||
|
| replication_type | None |
|
||||||
|
| created_at | 2016-10-14T14:50:47.000000 |
|
||||||
|
| share_proto | NFS |
|
||||||
|
| consistency_group_id | None |
|
||||||
|
| source_cgsnapshot_member_id | None |
|
||||||
|
| project_id | c3810d8bcc3346d0bdc8100b09abbbf1 |
|
||||||
|
| metadata | {} |
|
||||||
|
+-----------------------------+-----------------------------------------------------------------+
|
||||||
|
|
||||||
|
.. _flashblade_configure_multiple_back_ends:
|
||||||
|
|
||||||
|
Configure multiple back ends
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
An administrator can configure an instance of Manila to provision shares from
|
||||||
|
one or more back ends. Each back end leverages an instance of a vendor-specific
|
||||||
|
implementation of the Manila driver API.
|
||||||
|
|
||||||
|
The name of the back end is declared as a configuration option
|
||||||
|
share_backend_name within a particular configuration stanza that contains the
|
||||||
|
related configuration options for that back end.
|
||||||
|
|
||||||
|
So, in the case of an multiple back ends deployment, it is necessary to change
|
||||||
|
the default share backends before deployment.
|
||||||
|
|
||||||
|
Modify the file ``/etc/kolla/config/manila.conf`` and add the contents:
|
||||||
|
|
||||||
|
.. path /etc/kolla/config/manila.conf
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
enabled_share_backends = generic,fb1,fb2
|
||||||
|
|
||||||
|
Modify the file ``/etc/kolla/config/manila-share.conf`` and add the contents:
|
||||||
|
|
||||||
|
.. path /etc/kolla/config/manila-share.conf
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[generic]
|
||||||
|
share_driver = manila.share.drivers.generic.GenericShareDriver
|
||||||
|
interface_driver = manila.network.linux.interface.OVSInterfaceDriver
|
||||||
|
driver_handles_share_servers = True
|
||||||
|
service_instance_password = manila
|
||||||
|
service_instance_user = manila
|
||||||
|
service_image_name = manila-service-image
|
||||||
|
share_backend_name = GENERIC
|
||||||
|
|
||||||
|
[fb1]
|
||||||
|
share_backend_name = FB1
|
||||||
|
share_driver = manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver
|
||||||
|
driver_handles_share_servers = False
|
||||||
|
flashblade_mgmt_vip = <fb1_mgmt_ip>
|
||||||
|
flashblade_data_vip = <fb1_data_ip>
|
||||||
|
flashblade_api = <FB1 API token>
|
||||||
|
|
||||||
|
[fb2]
|
||||||
|
share_backend_name = FB2
|
||||||
|
share_driver = manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver
|
||||||
|
driver_handles_share_servers = False
|
||||||
|
flashblade_mgmt_vip = <fb2_mgmt_ip>
|
||||||
|
flashblade_data_vip = <fb2_data_ip>
|
||||||
|
flashblade_api = <FB2 API token>
|
||||||
|
|
||||||
|
For more information about how to manage shares, see the
|
||||||
|
:manila-doc:`Manage shares <user/create-and-manage-shares.html>`.
|
||||||
|
|
||||||
|
For details on how to use the Pure Storage FlashBlade, refer to the
|
||||||
|
`Pure Storage Manila Reference Guide <https://docs.openstack.org/manila/latest/configuration/shared-file-systems/drivers/purestorage-flashblade-driver.html>`_.
|
||||||
|
|
||||||
|
The use of this backend requires that the ``purity_fb`` SDK package is
|
||||||
|
installed in the ``manila-share`` container. To do this follow the steps
|
||||||
|
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.
|
@@ -395,6 +395,7 @@ workaround_ansible_issue_8743: yes
|
|||||||
#enable_manila_backend_cephfs_native: "no"
|
#enable_manila_backend_cephfs_native: "no"
|
||||||
#enable_manila_backend_cephfs_nfs: "no"
|
#enable_manila_backend_cephfs_nfs: "no"
|
||||||
#enable_manila_backend_glusterfs_nfs: "no"
|
#enable_manila_backend_glusterfs_nfs: "no"
|
||||||
|
#enable_manila_backend_flashblade: "no"
|
||||||
#enable_mariabackup: "no"
|
#enable_mariabackup: "no"
|
||||||
#enable_masakari: "no"
|
#enable_masakari: "no"
|
||||||
#enable_mistral: "no"
|
#enable_mistral: "no"
|
||||||
@@ -688,6 +689,11 @@ workaround_ansible_issue_8743: yes
|
|||||||
# The default option of nfs server type is 'Gluster'
|
# The default option of nfs server type is 'Gluster'
|
||||||
#manila_glusterfs_nfs_server_type:
|
#manila_glusterfs_nfs_server_type:
|
||||||
|
|
||||||
|
# Pure Storage FlashBlade configuration
|
||||||
|
#manila_flashblade_mgmt_vip:
|
||||||
|
#manila_flashblade_data_vip:
|
||||||
|
#manila_flashblade_api:
|
||||||
|
#
|
||||||
# Volume layout Options (required)
|
# Volume layout Options (required)
|
||||||
# If the glusterfs server requires remote ssh, then you need to fill
|
# If the glusterfs server requires remote ssh, then you need to fill
|
||||||
# in 'manila_glusterfs_servers', ssh user 'manila_glusterfs_ssh_user', and ssh password
|
# in 'manila_glusterfs_servers', ssh user 'manila_glusterfs_ssh_user', and ssh password
|
||||||
|
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
[Pure Storage - FlashBlade] Add support for Pure Storage FlashBlade
|
||||||
|
Manila NFS driver.
|
Reference in New Issue
Block a user