Implement NFS multi backend support
The NFS implementation based off cinder_nfs_client does not support per cinder backend configuration, separating NFS mounts per backend. This fix removes cinder_nfs_client in favor of fully supporting multi cinder backends over the cinder_backends stanza. Closes-Bug #1657203 Change-Id: I817ff372c2d58e999a89496fce3d25dc617216f0
This commit is contained in:
parent
d14410b70d
commit
e6c2b14c71
@ -205,16 +205,6 @@ cinder_quota_backup_gigabytes: 1000
|
|||||||
# cinder_backend_lvm_inuse: True if current host has an lvm backend
|
# cinder_backend_lvm_inuse: True if current host has an lvm backend
|
||||||
cinder_backend_lvm_inuse: '{{ (cinder_backends|default("")|to_json).find("lvm") != -1 }}'
|
cinder_backend_lvm_inuse: '{{ (cinder_backends|default("")|to_json).find("lvm") != -1 }}'
|
||||||
|
|
||||||
## Define nfs information for cinder. When the cinder_nfs_client dictionary is defined,
|
|
||||||
## it will enable nfs shares. The value ``nfs_shares_config`` is the path on the disk
|
|
||||||
## where the NFS export will live. The ``shares`` value is a list of dictionaries that
|
|
||||||
## must have the IP address of the NFS server and the location where the export will be.
|
|
||||||
# cinder_nfs_client:
|
|
||||||
# nfs_shares_config: /etc/cinder/nfs_shares
|
|
||||||
# shares:
|
|
||||||
# - ip: "127.0.0.1"
|
|
||||||
# share: "/vol/cinder"
|
|
||||||
|
|
||||||
## Policy vars
|
## Policy vars
|
||||||
# Provide a list of access controls to update the default policy.json with. These changes will be merged
|
# Provide a list of access controls to update the default policy.json with. These changes will be merged
|
||||||
# with the access controls in the default policy.json. E.g.
|
# with the access controls in the default policy.json. E.g.
|
||||||
|
@ -30,15 +30,29 @@ Edit ``/etc/openstack_deploy/openstack_user_config.yml`` and configure
|
|||||||
the NFS client on each storage node if the NetApp backend is configured to use
|
the NFS client on each storage node if the NetApp backend is configured to use
|
||||||
an NFS storage protocol.
|
an NFS storage protocol.
|
||||||
|
|
||||||
#. Add the ``cinder_backends`` stanza (which includes
|
#. For each storage node, add one ``cinder_backends`` block underneath
|
||||||
``cinder_nfs_client``) under the ``container_vars`` stanza for
|
the a new ``container_vars`` section. ``container_vars`` are used to
|
||||||
each storage node:
|
allow container/host individualized configuration. Each cinder back end
|
||||||
|
is defined with a unique key. For example, ``nfs-volume1``.
|
||||||
|
This later represents a unique cinder backend and volume type.
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
container_vars:
|
container_vars:
|
||||||
cinder_backends:
|
cinder_backends:
|
||||||
cinder_nfs_client:
|
nfs-volume1:
|
||||||
|
|
||||||
|
#. Configure the appropriate cinder volume backend name:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
volume_backend_name: NFS_VOLUME1
|
||||||
|
|
||||||
|
#. Configure the appropriate cinder NFS driver:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
volume_driver: cinder.volume.drivers.nfs.NfsDriver
|
||||||
|
|
||||||
#. Configure the location of the file that lists shares available to the
|
#. Configure the location of the file that lists shares available to the
|
||||||
block storage service. This configuration file must include
|
block storage service. This configuration file must include
|
||||||
@ -46,21 +60,43 @@ an NFS storage protocol.
|
|||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
nfs_shares_config: SHARE_CONFIG
|
nfs_shares_config: FILENAME_NFS_SHARES
|
||||||
|
|
||||||
Replace ``SHARE_CONFIG`` with the location of the share
|
Replace ``FILENAME_NFS_SHARES`` with the location of the share
|
||||||
configuration file. For example, ``/etc/cinder/nfs_shares``.
|
configuration file. For example, ``/etc/cinder/nfs_shares_volume1``.
|
||||||
|
|
||||||
|
#. Define mount options for the NFS mount. For example:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
|
||||||
|
|
||||||
#. Configure one or more NFS shares:
|
#. Configure one or more NFS shares:
|
||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
shares:
|
shares:
|
||||||
- { ip: "NFS_HOST", share: "NFS_SHARE" }
|
- { ip: "HOSTNAME", share: "PATH_TO_NFS_VOLUME" }
|
||||||
|
|
||||||
Replace ``NFS_HOST`` with the IP address or hostname of the NFS
|
Replace ``HOSTNAME`` with the IP address or hostname of the NFS
|
||||||
server, and the ``NFS_SHARE`` with the absolute path to an existing
|
server, and the ``PATH_TO_NFS_VOLUME`` with the absolute path to an
|
||||||
and accessible NFS share.
|
existing and accessible NFS share (excluding the IP address or hostname).
|
||||||
|
|
||||||
|
The following is a full configuration example of a cinder NFS backend
|
||||||
|
named NFS1. The cinder playbooks will automatically add a custom
|
||||||
|
``volume-type`` and ``nfs-volume1`` as in this example:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
container_vars:
|
||||||
|
cinder_backends:
|
||||||
|
nfs-volume1:
|
||||||
|
volume_backend_name: NFS_VOLUME1
|
||||||
|
volume_driver: cinder.volume.drivers.nfs.NfsDriver
|
||||||
|
nfs_shares_config: /etc/cinder/nfs_shares_volume1
|
||||||
|
nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120"
|
||||||
|
shares:
|
||||||
|
- { ip: "1.2.3.4", share: "/vol1" }
|
||||||
|
|
||||||
Backup
|
Backup
|
||||||
~~~~~~
|
~~~~~~
|
||||||
@ -407,9 +443,9 @@ each storage node that will use it.
|
|||||||
|
|
||||||
.. code-block:: yaml
|
.. code-block:: yaml
|
||||||
|
|
||||||
nfs_shares_config: SHARE_CONFIG
|
nfs_shares_config: FILENAME_NFS_SHARES
|
||||||
|
|
||||||
Replace ``SHARE_CONFIG`` with the location of the share
|
Replace ``FILENAME_NFS_SHARES`` with the location of the share
|
||||||
configuration file. For example, ``/etc/cinder/nfs_shares``.
|
configuration file. For example, ``/etc/cinder/nfs_shares``.
|
||||||
|
|
||||||
#. Configure the server:
|
#. Configure the server:
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
upgrade:
|
||||||
|
- The global override ``cinder_nfs_client`` is replaced
|
||||||
|
in favor of fully supporting multi backends
|
||||||
|
configuration via the cinder_backends stanza.
|
@ -68,10 +68,13 @@
|
|||||||
- name: Create nfs shares export file
|
- name: Create nfs shares export file
|
||||||
template:
|
template:
|
||||||
src: nfs_shares.j2
|
src: nfs_shares.j2
|
||||||
dest: "{{ cinder_nfs_client.nfs_shares_config }}"
|
dest: "{{ item.value.nfs_shares_config }}"
|
||||||
|
with_dict: "{{ cinder_backends }}"
|
||||||
when:
|
when:
|
||||||
- cinder_nfs_client is defined
|
- item.value.nfs_shares_config is defined
|
||||||
- inventory_hostname in groups['cinder_volume']
|
- inventory_hostname in groups['cinder_volume']
|
||||||
|
tags:
|
||||||
|
- cinder-nfs
|
||||||
|
|
||||||
- name: Drop sudoers file
|
- name: Drop sudoers file
|
||||||
template:
|
template:
|
||||||
|
@ -102,9 +102,6 @@ enabled_backends={% for backend in cinder_backends|dictsort %}{{ backend.0 }}{%
|
|||||||
{% for key, value in backend_section.1.items() if key != 'extra_volume_types' %}
|
{% for key, value in backend_section.1.items() if key != 'extra_volume_types' %}
|
||||||
{{ key }}={{ value }}
|
{{ key }}={{ value }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if cinder_nfs_client is defined %}
|
|
||||||
nfs_shares_config={{ cinder_nfs_client.nfs_shares_config }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# {{ ansible_managed }}
|
# {{ ansible_managed }}
|
||||||
|
{% for share in item.value.shares %}
|
||||||
{% for share in cinder_nfs_client.shares %}
|
|
||||||
{{ share.ip }}:{{ share.share }}
|
{{ share.ip }}:{{ share.share }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user