More documentation changes per Mirantis request.

Change-Id: I2276be3f2c5f1bf7a6769ca0bf200ba521b84f47

Refactoring for the new structure for Fuel 8. This change now handles
multi-backend in the face of the default options (lvm, ceph) and the
NetApp plugin. Note: I removed the multi-backend option, so it will
always put SolidFire in it's own stanza along with everyone (in the above
list) also.

Change-Id: Ibc3ffe202fb405da9b566498c23f6bcda84080a9
This commit is contained in:
Ed Balduf 2016-05-09 09:21:30 -06:00
parent 2845cc20dc
commit 04a325758f
16 changed files with 315 additions and 170 deletions

7
components.yaml Normal file
View File

@ -0,0 +1,7 @@
- name: 'storage:block:backend:solidfire'
label: 'Cinder SolidFire'
description: 'Cinder with SolidFire backend'
compatible:
- name: 'storage:block:backend:ceph'
- name: 'storage:block:backend:lvm'
- name: 'storage:block:backend:netapp'

View File

@ -1,17 +0,0 @@
#
# Copyright 2015 SolidFire, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
include plugin_solidfire_cinder::controller

View File

@ -0,0 +1,22 @@
notice('MODULAR: solidfire-hiera-override')
$cinder_solidfire = hiera_hash('cinder_solidfire', {})
$hiera_dir = '/etc/hiera/plugins'
$plugin_yaml = 'cinder_solidfire.yaml'
$plugin_name = 'cinder_solidfire'
$content = inline_template('
storage_hash:
volume_backend_names:
solidfire: solidfire
')
file { $hiera_dir:
ensure => directory,
}
file { "${hiera_dir}/${plugin_yaml}":
ensure => file,
content => $content,
}

View File

@ -0,0 +1,6 @@
notice('MODULAR: fuel-plugin-solidfire-cinder')
# The manifest is executed on nodes with cinder role or on nodes with controller role when Ceph is used.
if ('cinder' in hiera('roles')) or (!empty(filter_nodes(hiera('nodes'), 'role', 'ceph-osd'))) {
class { 'plugin_cinder_solidfire': }
}

View File

@ -0,0 +1,45 @@
#
# Copyright 2015 SolidFire, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
class plugin_cinder_solidfire::backend::iscsi (
$volume_group = 'cinder',
$iscsi_helper = $cinder::params::iscsi_helper,
$backend_type,
) inherits cinder::params {
$network_scheme = hiera_hash('network_scheme', {})
prepare_network_config($network_scheme)
$storage_address = get_network_role_property('cinder/iscsi', 'ipaddr')
cinder_config {
'cinder_iscsi/volume_backend_name': value => $backend_type;
'cinder_iscsi/volume_driver': value => 'cinder.volume.drivers.lvm.LVMVolumeDriver';
'cinder_iscsi/iscsi_helper': value => $iscsi_helper;
'cinder_iscsi/volume_group': value => $volume_group;
'cinder_iscsi/iscsi_ip_address': value => $storage_address;
'cinder_iscsi/backend_host': value => $storage_address;
}
ini_subsetting {'enable_cinder_iscsi_backend':
ensure => present,
section => 'DEFAULT',
key_val_separator => '=',
path => '/etc/cinder/cinder.conf',
setting => 'enabled_backends',
subsetting => "cinder_iscsi",
subsetting_separator => ',',
}
}

View File

@ -0,0 +1,49 @@
#
# Copyright 2015 SolidFire, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
class plugin_cinder_solidfire::backend::rbd (
$rbd_pool = 'volumes',
$rbd_user = 'volumes',
$rbd_ceph_conf = '/etc/ceph/ceph.conf',
$rbd_flatten_volume_from_snapshot = false,
$rbd_secret_uuid = 'a5d0dd94-57c4-ae55-ffe0-7e3732a24455',
$volume_tmp_dir = false,
$rbd_max_clone_depth = '5',
$glance_api_version = undef,
$backend_type,
) {
cinder_config {
'cinder_rbd/volume_backend_name': value => $backend_type;
'cinder_rbd/volume_driver': value => 'cinder.volume.drivers.rbd.RBDDriver';
'cinder_rbd/rbd_ceph_conf': value => $rbd_ceph_conf;
'cinder_rbd/rbd_user': value => $rbd_user;
'cinder_rbd/rbd_pool': value => $rbd_pool;
'cinder_rbd/rbd_max_clone_depth': value => $rbd_max_clone_depth;
'cinder_rbd/rbd_flatten_volume_from_snapshot': value => $rbd_flatten_volume_from_snapshot;
'cinder_rbd/backend_host': value => "rbd:${rbd_pool}";
}
ini_subsetting {'enable_cinder_rbd_backend':
ensure => present,
section => 'DEFAULT',
key_val_separator => '=',
path => '/etc/cinder/cinder.conf',
setting => 'enabled_backends',
subsetting => "cinder_iscsi",
subsetting_separator => ',',
}
}

View File

@ -0,0 +1,58 @@
# Copyright 2015 SolidFire, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
define plugin_cinder_solidfire::backend::solidfire (
$backend_name = $name,
$cinder_solidfire = $plugin_cinder_solidfire::cinder_solidfire,
) {
include cinder::params
include cinder::client
ini_subsetting {'enable_cinder_solidfire_backend':
ensure => present,
section => 'DEFAULT',
key_val_separator => '=',
path => '/etc/cinder/cinder.conf',
setting => 'enabled_backends',
subsetting => "${backend_name}",
subsetting_separator => ',',
}
notice("${backend_name}")
cinder::backend::solidfire { $backend_name :
san_ip => $cinder_solidfire['solidfire_mvip'],
san_login => $cinder_solidfire['solidfire_admin_login'],
san_password => $cinder_solidfire['solidfire_admin_password'],
volume_backend_name => $backend_name,
sf_emulate_512 => 'true',
sf_api_port => $cinder_solidfire['solidfire_api_port'],
sf_account_prefix => $cinder_solidfire['solidfire_account_prefix'],
extra_options => { "${backend_name}/sf_allow_template_caching" =>
{ value => $cinder_solidfire['solidfire_allow_template_caching'] },
"${backend_name}/sf_template_account_name" =>
{ value => $cinder_solidfire['solidfire_template_account'] },
"${backend_name}/host" =>
{ value => $backend_name },
},
}
Cinder_config <||> ~> service { "$::cinder::params::scheduler_service": } ~> service { "$::cinder::params::volume_service": }
package { 'open-iscsi' :
ensure => 'installed',
}
}

View File

@ -0,0 +1,41 @@
#
# Copyright 2015 SolidFire, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
class plugin_cinder_solidfire {
$cinder_solidfire = hiera_hash('cinder_solidfire', {})
$storage_hash = hiera_hash('storage_hash', {})
$plugins = hiera('plugins', [] )
if ($storage_hash['volume_backend_names']['volumes_lvm']) {
$backend_type = $storage_hash['volume_backend_names']['volumes_lvm']
$backend_name = 'cinder_iscsi'
$volume_backend_name = 'volumes_lvm'
$backend_class = 'plugin_cinder_solidfire::backend::iscsi'
} elsif ($storage_hash['volume_backend_names']['volumes_ceph']) {
$backend_type = $storage_hash['volume_backend_names']['volumes_ceph']
$backend_name = 'cinder_rbd'
$volume_backend_name = 'volumes_ceph'
$backend_class = 'plugin_cinder_solidfire::backend::rbd'
}
if ( 'cinder_netapp' in $plugins ) {
plugin_cinder_solidfire::backend::solidfire { 'solidfire': backend_name => 'solidfire', }
} else {
class { $backend_class: backend_type => $backend_type, }
plugin_cinder_solidfire::backend::solidfire { 'solidfire': backend_name => 'solidfire', }
}
}

View File

@ -1,71 +0,0 @@
# Copyright 2015 SolidFire, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
class plugin_solidfire_cinder::controller (
$backend_name = 'solidfire',
$backends = ''
) {
include cinder::params
include cinder::client
$plugin_settings = hiera('fuel-plugin-solidfire-cinder')
if $::cinder::params::volume_package {
package { $::cinder::params::volume_package:
ensure => present,
}
Package[$::cinder::params::volume_package] -> Cinder_config<||>
}
if $plugin_settings['multibackend'] {
$section = $backend_name
cinder_config {
"DEFAULT/enabled_backends": value => "${backend_name},${backends}";
}
} else {
$section = 'DEFAULT'
}
cinder::backend::solidfire { $section :
san_ip => $plugin_settings['solidfire_mvip'],
san_login => $plugin_settings['solidfire_admin_login'],
san_password => $plugin_settings['solidfire_admin_password'],
volume_backend_name => $section,
sf_emulate_512 => $plugin_settings['solidfire_emulate_512'],
sf_api_port => $plugin_settings['solidfire_api_port'],
sf_account_prefix => $plugin_settings['solidfire_account_prefix'],
extra_options => { "$section/sf_allow_template_caching" =>
{ value => $plugin_settings['solidfire_allow_template_caching'] },
"$section/sf_template_account_name" =>
{ value => $plugin_settings['solidfire_template_account'] },
"$section/host" => { value => $section }
},
}
Cinder_config<||>~> Service[cinder_volume]
service { 'cinder_volume':
ensure => running,
name => $::cinder::params::volume_service,
enable => true,
hasstatus => true,
hasrestart => true,
}
package { 'open-iscsi' :
ensure => 'installed',
}
}

View File

@ -1,16 +0,0 @@
#
# Copyright 2015 SolidFire, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
class plugin__solidfire_cinder {}

21
deployment_tasks.yaml Normal file
View File

@ -0,0 +1,21 @@
- id: solidfire_hiera_override
type: puppet
version: 2.0.0
groups: [primary-controller, controller, cinder]
requires: [hiera]
required_for: [create-cinder-types]
parameters:
puppet_manifest: puppet/manifests/hiera_override.pp
puppet_modules: /etc/puppet/modules
timeout: 360
- id: solidfire_cinder
type: puppet
version: 2.0.0
role: [primary-controller, controller, cinder]
requires: [post_deployment_start]
required_for: [post_deployment_end]
parameters:
puppet_manifest: puppet/manifests/site.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 360

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

View File

@ -1,5 +1,5 @@
******************************************************************
Guide to the SolidFire Cinder Plugin version 01.001.1 for Fuel 7.x
Guide to the SolidFire Cinder Plugin version 02.000.0 for Fuel 8.x
******************************************************************
This document provides instructions for installing, configuring and using
@ -12,6 +12,11 @@ MVIP
Management Virtual IP (MVIP) is the IP address (or hostname) of
the management interface to the SolidFire cluster
SVIP
Storage Virtual IP (SVIP) is the IP address (or hostname) of the
storage interface of the SolidFire cluster. SolidFire supports
multiple SVIPs on separate VLANs.
Cluster Admin account
The Cluster Admin account on a SolidFire cluster is the account by
which you administer the SolidFire cluster.
@ -50,7 +55,7 @@ Requirements
======================= ==================
Requirement Version/Comment
======================= ==================
Fuel 7.0
Fuel 8.0
============================================
@ -69,14 +74,26 @@ Prerequisites
Limitations
-----------
* Fuel does not support multiple storage backends in Cinder,
therefore the SolidFire Cinder Fuel plugin also does not support multiple backends.
* The SolidFire Cinder Fuel plugin no longer supports a single backend. The
option has been removed from the GUI and the plugin will always assume
multiple backends.
* The SolidFire Cinder Fuel plugin does however provide the ability to
create a configuration file stanza such that when multi-backend support
is added to Fuel the stanza is correct. By selecting the checkbox (selected by default)
'Multibackend Enabled' the stanza is added and the enabled_backends line is added to
the 'default' section of the configuration file.
* Since Fuel does not natively support multiple backends in Cinder; therefore,
the plugin is designed to move the default storage selection (ceph or lvm)
from the default section of the config file into it's own stanza before it
can add the SolidFire config stanza.
* The SolidFire Cinder plugin has been designed to detect the NetApp plugin
and handle multiple backends in conjunction with NetApp correctly.
* All other storage plugins (other than NetApp) may conflict with the
SolidFire or NetApp plugin and whichever plugin runs last will configure the
enabled_backends, requiring hand editing.
* NOTE: When using this plugin with the NetApp plugin one MUST select
'Multibackend Enabled' on NetApp plugin for proper multi-backend
to be automatically enabled.
============================================
@ -89,6 +106,18 @@ SolidFire Cinder plugin installation
#. Download the plugin from
`Fuel Plugins Catalog <https://www.mirantis.com/products/openstack-drivers-and-plugins/fuel-plugins/>`_.
or clone this repository, install the fuel plugin builder with the
following command
::
pip install fuel-plugin-builder
and then build the plugin using the following command:
::
cd fuel-plugin-solidfire-cinder; fpb --build ./
#. Copy the plugin to an already installed Fuel Master node. If you do not
have the Fuel Master node yet, follow the instructions from the
@ -96,7 +125,7 @@ SolidFire Cinder plugin installation
::
# scp fuel-plugin-solidfire-cinder-1.1-1.1.1-1.noarch.rpm \
# scp fuel-plugin-solidfire-cinder-2.0-2.0.0-1.noarch.rpm \
root@:<the_Fuel_Master_node_IP>:/tmp
#. Log into the Fuel Master node and install the plugin:
@ -104,28 +133,28 @@ SolidFire Cinder plugin installation
::
# cd /tmp
# fuel plugins --install /tmp/fuel-plugin-solidfire-cinder-1.1-1.1.1-1.noarch.rpm
# fuel plugins --install /tmp/fuel-plugin-solidfire-cinder-2.0-2.0.0-1.noarch.rpm
...
# fuel plugins list
id | name | version | package_version
---|------------------------------|---------|----------------
1 | fuel-plugin-solidfire-cinder | 1.1.1 | 2.0.0
1 | fuel-plugin-solidfire-cinder | 2.0.0 | 4.0.0
SolidFire Cinder plugin configuration
-------------------------------------
#. After plugin is installed, create a new OpenStack environment following
`the instructions <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#create-a-new-openstack-environment>`_.
`the instructions <https://docs.mirantis.com/openstack/fuel/fuel-8.0/user-guide.html#create-a-new-openstack-environment>`_.
#. Configure your environment following
`the official Mirantis OpenStack documentation <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#configure-your-environment>`_.
`the official Mirantis OpenStack documentation <https://docs.mirantis.com/openstack/fuel/fuel-8.0/user-guide.html#configure-your-environment>`_.
#. Open the *Settings tab* of the Fuel web UI and scroll down the page and select
'Fuel plugin to enable SolidFire driver in Cinder.' on the left.
#. Open the *Storage tab* of the Fuel web UI and scroll down the page to
'Fuel plugin to enable SolidFire in Cinder.'
#. Select the Fuel plugin checkbox to enable SolidFire Cinder plugin for Fuel:
.. image:: figures/cinder-solidfire-plugin-1.1.0.png
.. image:: figures/cinder-solidfire-plugin-2.0.0.png
:width: 100%
#. The default configuration is that the SolidFire configuration stanza is a self contained stanza
@ -133,11 +162,6 @@ SolidFire Cinder plugin configuration
section to enable the SolidFire Stanza. This option allows for multiple backends to be configured and
configures Cinder to place the proper routing information into the database.
#. If you would like the SolidFire configuration in the 'default' section of the configuration file
(not recommended) uncheck the 'Multibackend Enabled' box. In this case, Cinder does not place routing
information in the database, and if in the future multibackends are required, all rows in the database
need to have routing information added using the cinder-manage tool.
#. Enter the Cluster Admin account information (account and password) and the IP address
of the Management Virtual IP (MVIP) of the SolidFire Cluster.
@ -152,16 +176,13 @@ SolidFire Cinder plugin configuration
cluster and the cached images will be contained within this account. The account will be prefixed with
the 'SF account prefix' if defined.
#. 'Emulate 512 block size' will cause the driver to create volumes with 512 byte blocks enabled. Otherwise
4096 byte blocksize will be used.
#. 'SF account prefix' will prefix all accounts on the SolidFire cluster with the defined prefix. The
prefix is useful (but not required) when multiple OpenStack instances access the same SolidFire cluster
such that each instance can quickly identify accounts that belong to that instance. NOTE: Accounts
on SolidFire are named using the Project/Tenant ID, optionally prefixed as defined here.
#. Once configuration is done, you can run
`network verification <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#verify-networks>`_ check and `deploy the environment <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#deploy-changes>`_.
`network verification <https://docs.mirantis.com/openstack/fuel/fuel-8.0/user-guide.html#verify-networks>`_ check and `deploy the environment <https://docs.mirantis.com/openstack/fuel/fuel-8.0/user-guide.html#deploy-changes>`_.
User Guide
@ -176,8 +197,11 @@ cinder-volume process log file with the 'solidfire' title.
Known issues
============
Due to Fuels lack of support for multiple cinder backends, only a single storage vendor backend may be automatically
configure within Fuel at this time. If you need to support multiple vendors, hand editing of the cinder.conf is required.
Due to Fuels lack of support for multiple cinder backends, only plugins
designed to reconfigure the base storage and detect other backend plugins
will work automatically. The SolidFire plugin will reconfigure the default
storage and detect the NetApp plugin. If you need to support other vendors,
hand editing of the cinder.conf is required.
Release Notes
=============
@ -189,6 +213,8 @@ Release Notes
* Version 01.001.1 adds automated install of the open-iscsi package which is required by SolidFire, but not installed
by Fuel if Ceph is selected in the starting wizzard. Supports Fuel 7.x.
* Version 02.00.0 refactors the code to support Fuel 8.0
Troubleshooting
===============

View File

@ -1,10 +1,6 @@
attributes:
multibackend:
value: true
label: 'Multibackend enabled'
description: 'SolidFire will be used in a Multibackend env.'
weight: 10
type: "checkbox"
metadata:
group: 'storage'
solidfire_mvip:
value: ''
label: 'Cluster MVIP (san_ip)'
@ -44,19 +40,6 @@ attributes:
description: 'SolidFire account to use to hold the template cache.'
weight: 52
type: "text"
solidfire_emulate_512:
value: "true"
values:
- data: "true"
label: "True"
description: "Enables 512 byte emulation on volumes during creation."
- data: "false"
label: "False"
description: "Disables 512 byte emulation and uses the native 4096 byte block size."
label: "SolidFire Emulate 512 block size"
description: 'Enable/Disable 512 byte block size emulation (typically left enabled).'
weight: 60
type: "radio"
solidfire_account_prefix:
value: ''
label: 'SF account prefix'

View File

@ -1,19 +1,21 @@
name: fuel-plugin-solidfire-cinder
title: Fuel plugin to enable SolidFire driver in Cinder
version: '1.1.1'
name: cinder_solidfire
title: Fuel plugin for SolidFire in Cinder
version: '2.0.0'
description: Enables the SolidFire driver in Cinder
fuel_version: ['7.0']
fuel_version: ['8.0']
licenses: ['Apache License Version 2.0']
authors: [ 'Ed Balduf <ed.balduf@solidfire.com>', 'John Griffith <john.griffith@solidfire.com>']
authors: ['Ed Balduf <ed.balduf@solidfire.com>']
homepage: 'https://github.com/stackforge/fuel-plugin-solidfire-cinder'
groups: ['storage::cinder']
is_hotpluggable: true
releases:
- os: ubuntu
version: 2015.1-7.0
mode: ['ha', 'multinode']
version: liberty-8.0
mode: ['ha']
deployment_scripts_path: deployment_scripts/
repository_path: repositories/ubuntu
# Version of plugin package
package_version: '2.0.0'
package_version: '4.0.0'

View File

@ -1,11 +0,0 @@
# This tasks will be applied on controller nodes,
# here you can also specify several roles, for example
# ['cinder', 'compute'] will be applied only on
# cinder and compute nodes
- role: ['primary-controller', 'controller']
stage: post_deployment/6101
type: puppet
parameters:
puppet_manifest: puppet/manifests/controller.pp
puppet_modules: puppet/modules:/etc/puppet/modules
timeout: 360