Refactor of code to accomplish the following
1) Use SolidFire puppet module which matches the release of OpenStack in this Fuel release 2) Rename the modules class to controller 3) Call out the module at the correct time within deploy and correct class of node 4) Make environment_config.yaml appropriate for this version of the driver (i.e. no caching) 5) Documents as required 6) Clean up what is checked into git Change-Id: I05283107291d7d8a29502f043a5bb7d49b0c3bb8
This commit is contained in:
parent
47b68e31fe
commit
ad7bea668b
9
.gitignore
vendored
Normal file
9
.gitignore
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
.tox
|
||||
.build
|
||||
*.pyc
|
||||
repositories/centos/*
|
||||
repositories/ubuntu/*
|
||||
deployment_scripts/puppet/modules/inifile
|
||||
deployment_scripts/puppet/modules/stdlib
|
||||
build.sh
|
||||
*.rpm
|
17
deployment_scripts/puppet/manifests/controller.pp
Executable file
17
deployment_scripts/puppet/manifests/controller.pp
Executable file
@ -0,0 +1,17 @@
|
||||
#
|
||||
# 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
|
@ -1,3 +0,0 @@
|
||||
$fuel_settings = parseyaml($astute_settings_yaml)
|
||||
#class {'plugin_solidfire_cinder::': }
|
||||
include plugin_solidfire_cinder
|
@ -0,0 +1,63 @@
|
||||
# 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['solidifre_emulate_512'],
|
||||
sf_api_port => $plugin_settings['solidfire_api_port'],
|
||||
# due to a non-update of the puppet modules in version 6.1 of fuel we need to set this
|
||||
volume_driver => 'cinder.volume.drivers.solidfire.SolidFireDriver'
|
||||
}
|
||||
|
||||
Cinder_config<||>~> Service[cinder_volume]
|
||||
|
||||
service { 'cinder_volume':
|
||||
ensure => running,
|
||||
name => $::cinder::params::volume_service,
|
||||
enable => true,
|
||||
hasstatus => true,
|
||||
hasrestart => true,
|
||||
}
|
||||
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
#
|
||||
# Copyright 2015 SolidFire, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
@ -12,34 +13,4 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
|
||||
class plugin_solidfire_cinder {
|
||||
|
||||
include cinder::params
|
||||
|
||||
if $::fuel_settings['fuel-plugin-solidfire-cinder']['multibackend'] {
|
||||
$section = 'cinder_solidfire'
|
||||
} else {
|
||||
$section = 'DEFAULT'
|
||||
}
|
||||
|
||||
if $::cinder::params::volume_package {
|
||||
package { $::cinder::params::volume_package:
|
||||
ensure => present,
|
||||
}
|
||||
Package[$::cinder::params::volume_package] -> Cinder_config<||>
|
||||
}
|
||||
|
||||
cinder_config {
|
||||
"${section}/volume_driver": value => 'cinder.volume.drivers.solidfire.SolidFireDriver';
|
||||
"${section}/san_login": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_admin_login'];
|
||||
"${section}/san_password": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_admin_password'];
|
||||
"${section}/san_ip": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_mvip'];
|
||||
"${section}/sf_api_port": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_api_port'];
|
||||
"${section}/sf_emulate_512": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidifre_emulate_512'];
|
||||
"${section}/sf_allow_template_caching": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_enable_image_caching'];
|
||||
"${section}/sf_template_account_name": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_image_cache_account'];
|
||||
"${section}/sf_account_prefix": value => $::fuel_settings['fuel-plugin-solidfire-cinder']['solidfire_account_prefix'];
|
||||
}
|
||||
|
||||
}
|
||||
class plugin__solidfire_cinder {}
|
BIN
docs/figures/cinder-solidfire-plugin.png
Normal file
BIN
docs/figures/cinder-solidfire-plugin.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 85 KiB |
105
docs/solidfire-cinder-guide.rst
Normal file
105
docs/solidfire-cinder-guide.rst
Normal file
@ -0,0 +1,105 @@
|
||||
************************************************************
|
||||
Guide to the SolidFire Cinder Plugin version 1.0.0 for Fuel
|
||||
************************************************************
|
||||
|
||||
This document provides instructions for installing, configuring and using
|
||||
SolidFire Cinder plugin for Fuel.
|
||||
|
||||
Key terms, acronyms and abbreviations
|
||||
=====================================
|
||||
|
||||
MVIP
|
||||
Management Virtual IP (MVIP) is the IP address (or hostname) of
|
||||
the management interface to the SolidFire cluster
|
||||
|
||||
Cluster Admin account
|
||||
The Cluster Admin account on a SolidFire cluster is the account by
|
||||
which you administer the SolidFire cluster.
|
||||
|
||||
SolidFire accounts
|
||||
SolidFire accounts are automatically created by the SolidFire
|
||||
OpenStack driver as needed based on the Project ID. These accounts
|
||||
manage the CHAP authentication for the volumes allocated by that
|
||||
project. No configuration is needed for these accounts.
|
||||
|
||||
SolidFire Cinder
|
||||
=============
|
||||
|
||||
The SolidFire Cinder Fuel plugin provides an automated method
|
||||
to insert the necessary lines into the cinder.conf file. The plugin
|
||||
extends the Fuel GUI to provide the necessary entry locations for the
|
||||
information for the configuration file.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
======================= ==================
|
||||
Component License type
|
||||
======================= ==================
|
||||
No Components are present
|
||||
|
||||
============================================
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
======================= ==================
|
||||
Requirement Version/Comment
|
||||
======================= ==================
|
||||
Fuel 6.1
|
||||
|
||||
============================================
|
||||
|
||||
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 does however provide the ability to
|
||||
create a configuarion file stanza such that when multi-backend support
|
||||
is added to fuel the stanza is correct.
|
||||
|
||||
Installation Guide
|
||||
==================
|
||||
|
||||
Provide step-by-step instructions for plugin installation.
|
||||
If plugin requires pre-installation steps like backend configuration,
|
||||
you should also add this information here.
|
||||
|
||||
SolidFire Cinder Plugin installation
|
||||
--------------------------
|
||||
|
||||
1. Download the plugin from Fuel Plugins Catalog.
|
||||
2. Copy the plugin on already installed Fuel Master node. If you do not
|
||||
have the Fuel Master node yet, see Quick Start Guide:
|
||||
scp fuel-plugin-solidfire-cinder-1.0-1.0.1-1.noarch.rpm root@:<the_Fuel_Master_node_IP>:/tmp
|
||||
3. Log into the Fuel Master node.
|
||||
4. Install the plugin:
|
||||
cd /tmp
|
||||
fuel plugins --install /tmp/fuel-plugin-solidfire-cinder-1.0-1.0.1-1.noarch.rpm
|
||||
4. After plugin is installed, create a new OpenStack environment.
|
||||
5. Configure your environment.
|
||||
6. Open the Settings tab of the Fuel web UI and scroll down the page. Select the
|
||||
Fuel plugin to enable SolidFire driver in Cinder plugin checkbox:
|
||||
7. Enter the Cluster Admin account information (account and password) and the IP address
|
||||
of the Management Virtual IP (MVIP) of the SolidFire Cluster.
|
||||
7a. Select the defaults for all other SolidFire options.
|
||||
|
||||
User Guide
|
||||
==========
|
||||
|
||||
Once the OpenStack instance is deployed by Fuel the SolidFire plugin provides no
|
||||
user configurable or maintainable options.
|
||||
|
||||
The SolidFire driver (Once configured by Fuel) will output all logs into the
|
||||
cinder-volume process log file with the 'SolidFire' title.
|
||||
|
||||
Known issues
|
||||
============
|
||||
|
||||
There are no known issues at this time.
|
||||
|
||||
Appendix
|
||||
========
|
||||
|
||||
N/A
|
@ -1,15 +1,21 @@
|
||||
attributes:
|
||||
multibackend:
|
||||
value: false
|
||||
value: true
|
||||
label: 'Multibackend enabled'
|
||||
description: 'SolidFire will be used in a Multibackend env (not implemented by Fuel).'
|
||||
weight: 40
|
||||
description: 'SolidFire will be used in a Multibackend env.'
|
||||
weight: 10
|
||||
type: "checkbox"
|
||||
solidifire_admin_login:
|
||||
solidfire_mvip:
|
||||
value: ''
|
||||
label: 'Cluster MVIP (san_ip)'
|
||||
description: 'The hostname (or IP address) for the SolidFire Cluster API endpoint.'
|
||||
weight: 20
|
||||
type: "text"
|
||||
solidfire_admin_login:
|
||||
value: ''
|
||||
label: 'Login for Cluster Admin account (san_login)'
|
||||
description: 'Cluster account used by Cinder service.'
|
||||
weight: 10
|
||||
weight: 30
|
||||
type: "text"
|
||||
regex:
|
||||
source: '\S'
|
||||
@ -18,17 +24,11 @@ attributes:
|
||||
value: ''
|
||||
label: 'Password for Cluster Admin account (san_password)'
|
||||
description: 'Cluster account used by Cinder service.'
|
||||
weight: 20
|
||||
weight: 40
|
||||
type: "password"
|
||||
solidfire_mvip:
|
||||
value: ''
|
||||
label: 'Cluster MVIP (san_ip)'
|
||||
description: 'The hostname (or IP address) for the SolidFire Cluster API endpoint.'
|
||||
weight: 30
|
||||
type: "text"
|
||||
solidfire_api_port:
|
||||
value: '443'
|
||||
label: 'Cluster enpoint port'
|
||||
label: 'Cluster endpoint port'
|
||||
description: 'The TCP port to use for API communication with the cluster or proxy server.'
|
||||
weight: 50
|
||||
type: "text"
|
||||
@ -36,37 +36,12 @@ attributes:
|
||||
value: "true"
|
||||
values:
|
||||
- data: "true"
|
||||
label: "true"
|
||||
label: "True"
|
||||
description: "Enables 512 byte emulation on volumes during creation."
|
||||
- data: "false"
|
||||
label: "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_enable_image_caching:
|
||||
value: "true"
|
||||
values:
|
||||
- data: "true"
|
||||
label: "true"
|
||||
description: "Enables caching of glance images on the SolidFire cluster."
|
||||
- data: "false"
|
||||
label: "false"
|
||||
description: "Disables caching of glance images on the SolidFire cluster."
|
||||
label: "SolidFire enable image caching"
|
||||
description: 'Enable/Disable caching of Glance images on the SolidFire cluster.'
|
||||
weight: 70
|
||||
type: "radio"
|
||||
solidfire_image_cache_account:
|
||||
value: 'openstack-vtemplate'
|
||||
label: 'Image Cache account name'
|
||||
description: 'The SolidFire tenant that will own cached image volumes on the Cluster.'
|
||||
weight: 70
|
||||
type: "text"
|
||||
solidfire_account_prefix:
|
||||
value: ''
|
||||
label: 'Account Prefix for this OpenStack'
|
||||
description: 'Pre-pend this name to all accounts on the SolidFire Array.'
|
||||
weight: 80
|
||||
type: "text"
|
||||
|
Binary file not shown.
@ -1,11 +1,11 @@
|
||||
name: fuel-plugin-solidfire-cinder
|
||||
title: Fuel plugin to enable SolidFire driver in Cinder
|
||||
version: '1.0.0'
|
||||
version: '1.0.1'
|
||||
description: Enables the SolidFire driver in Cinder
|
||||
fuel_version: ['6.1']
|
||||
licenses: ['Apache License Version 2.0']
|
||||
authors: ['John Griffith <john.griffith@solidfire.com>']
|
||||
homepage: 'https://github.com/stackforge/fuel-plugins'
|
||||
authors: ['John Griffith <john.griffith@solidfire.com>', 'Ed Balduf <ed.balduf@solidfire.com>']
|
||||
homepage: 'https://github.com/stackforge/fuel-plugin-solidfire-cinder'
|
||||
groups: ['storage::cinder']
|
||||
|
||||
releases:
|
||||
|
141
specs/solidfire-plugin-specs.rst
Normal file
141
specs/solidfire-plugin-specs.rst
Normal file
@ -0,0 +1,141 @@
|
||||
|
||||
This work is licensed under the Apache License, Version 2.0.
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
==================================================
|
||||
Fuel plugin for SolidFire clusters as a Cinder backend
|
||||
==================================================
|
||||
|
||||
SolidFire plugin for Fuel extends Mirantis OpenStack functionality by adding
|
||||
support for SolidFire clusters in Cinder using iSCSI protocol.
|
||||
It replaces Cinder LVM driver which is the default volume backend that uses
|
||||
local volumes managed by LVM.
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
Currently, Fuel has no support for SolidFire clusters as block storage for
|
||||
OpenStack environments. Solidfire plugin aims to provide support for it.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Implement a Fuel plugin that will configure the SolidFire driver for
|
||||
Cinder on all Controller nodes. Cinder volume service will be managed
|
||||
by Pacemaker/Corosync to provide HA. Having all Cinder services run
|
||||
on controllers no additional Cinder node is required in environment.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
It might have been implemented as part of Fuel core but we decided to make it
|
||||
as a plugin for several reasons:
|
||||
|
||||
* This isn't something that all operators may want to deploy.
|
||||
* Any new additional functionality makes the project's testing more difficult,
|
||||
which is an additional risk for the Fuel release.
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Upgrade impact
|
||||
--------------
|
||||
|
||||
None
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
The SolidFire storage clusters provide high performance block storage for
|
||||
OpenStack envirnments, and therefore enabling the SolidFire driver in OpenStack
|
||||
will greatly improve peformance of OpenStack.
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
The deployer should configure the IP addresses on the SolidFire array before
|
||||
they deloy the Fuel Plugin to the controllers. If not, the Cinder-volume service
|
||||
will need to be restarted once the SolidFire cluster is configured
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
The plugin generates the approriate cinder.conf stanzas to enable the SolidFire
|
||||
cluster within OpenStack. There are NO other packages required, the SolidFire driver
|
||||
which is included in the OpenStack distribution is all that is necessary.
|
||||
|
||||
Plugin has two tasks. Each task per role. They are run in the following order:
|
||||
|
||||
* The first task installs and configures cinder-volume on Primary Controller.
|
||||
* The second task installs and configures cinder-volume on Controller nodes.
|
||||
|
||||
Cinder-volume service is installed on all Controller nodes and is managed by
|
||||
Pacemaker. It runs in active/passive mode where only one instance is active.
|
||||
All instances of cinder-volume have the same “host” parameter in cinder.conf
|
||||
file. This is required to achieve ability to manage all volumes in the
|
||||
environment by any cinder-volume instance.
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
| Edward Balduf <ed.balduf@solidfire.com>
|
||||
| John Griffith <john.griffith@solidfire.com>
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Implement the Fuel plugin.
|
||||
* Implement the Puppet manifests.
|
||||
* Testing.
|
||||
* Write the documentation.
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
* Fuel 6.1 and higher.
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
* Prepare a test plan.
|
||||
* Test the plugin by deploying environments with all Fuel deployment modes.
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
* Deployment Guide (how to install the storage backends, how to prepare an
|
||||
environment for installation, how to install the plugin, how to deploy an
|
||||
OpenStack environment with the plugin).
|
||||
* User Guide (which features the plugin provides, how to use them in the
|
||||
deployed OpenStack environment).
|
||||
* Test Plan.
|
||||
* Test Report.
|
||||
|
@ -2,10 +2,10 @@
|
||||
# here you can also specify several roles, for example
|
||||
# ['cinder', 'compute'] will be applied only on
|
||||
# cinder and compute nodes
|
||||
- role: ['cinder']
|
||||
stage: post_deployment
|
||||
- role: ['primary-controller', 'controller']
|
||||
stage: post_deployment/6101
|
||||
type: puppet
|
||||
parameters:
|
||||
puppet_manifest: puppet/manifests/site.pp
|
||||
puppet_manifest: puppet/manifests/controller.pp
|
||||
puppet_modules: puppet/modules:/etc/puppet/modules
|
||||
timeout: 360
|
||||
|
Loading…
Reference in New Issue
Block a user