Import the project
This is really a merge with squash from another repository. See the previous history at: <https://github.com/SmartInfrastructures/fuel-plugin-calamari/tree/pre-gerrit> Change-Id: Ib989d46ce24398a652cb0218e8db9890cf3590e6
This commit is contained in:
parent
6aaede0bfb
commit
6802915d89
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
.tox
|
||||
.build
|
||||
*.pyc
|
||||
/doc/build/
|
||||
/fuel-plugin-calamari-*.noarch*.rpm
|
||||
/fuel-plugin-calamari-*.pdf
|
202
LICENSE
Normal file
202
LICENSE
Normal file
@ -0,0 +1,202 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright {yyyy} {name of copyright owner}
|
||||
|
||||
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.
|
||||
|
120
README.md
Normal file
120
README.md
Normal file
@ -0,0 +1,120 @@
|
||||
fuel-plugin-calamari
|
||||
====================
|
||||
|
||||
Intro
|
||||
-----
|
||||
|
||||
This is an working implementation for a plugin that will install
|
||||
[calamari console for ceph](https://ceph.com/category/calamari/) on a
|
||||
os-base node with fuel.
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
Please look at the [install guide](doc/source/installation-guide.rst)
|
||||
and [user guide](doc/source/user-guide.rst).
|
||||
|
||||
Version installed
|
||||
-----------------
|
||||
|
||||
The =fuel-camari-plugin= installs the following packages:
|
||||
|
||||
- For Ubuntu:
|
||||
|
||||
- calamari-clients 1.2.2-32-g931ee58
|
||||
- calamari-server 1.0.0-1
|
||||
- diamond 3.1.0
|
||||
- python-msgpack-python 1.0
|
||||
|
||||
- For CentOS:
|
||||
|
||||
- calamari-clients 1.3-rc_12_g7d36e29.el6
|
||||
- calamari-server 1.3.0.1-11_g9fb65ae.el6
|
||||
- diamond 3.4.67-1.noarch.rpm
|
||||
- libcairo 1.14.2-alt1
|
||||
- pycairo 1.8.6-2.1.el6
|
||||
- supervisor 3.0.el6
|
||||
|
||||
Testing
|
||||
-------
|
||||
|
||||
A simple install script tested with the default values of the
|
||||
[virtualbox
|
||||
script](https://github.com/stackforge/fuel-main/blob/master/virtualbox/README.md)
|
||||
is available once the plugin is installed. It requires a clean
|
||||
environment with at least 4 unallocated nodes.
|
||||
|
||||
Run with the following:
|
||||
|
||||
```
|
||||
cd /var/www/nailgun/plugins/fuel-plugin-calamari-1.0/test/
|
||||
./simple-install
|
||||
```
|
||||
|
||||
Debugging
|
||||
---------
|
||||
|
||||
The following commands may be helpful:
|
||||
|
||||
```
|
||||
# On the controllers and ceph-osd nodes
|
||||
|
||||
puppet apply --debug \
|
||||
--modulepath=/etc/fuel/plugins/fuel-plugin-calamari-1.0/puppet/modules:/etc/puppet/modules \
|
||||
/etc/fuel/plugins/fuel-plugin-calamari-1.0/puppet/manifests/calamari-agent.pp
|
||||
|
||||
# On the calamari node
|
||||
|
||||
puppet apply /etc/puppet/modules/osnailyfacter/modular/netconfig/netconfig.pp
|
||||
|
||||
puppet apply --debug \
|
||||
--modulepath=/etc/fuel/plugins/fuel-plugin-calamari-1.0/puppet/modules:/etc/puppet/modules \
|
||||
/etc/fuel/plugins/fuel-plugin-calamari-1.0/puppet/manifests/calamari-server.pp
|
||||
```
|
||||
|
||||
TODO list
|
||||
---------
|
||||
|
||||
- Salt change the ceph configuration:
|
||||
|
||||
Here is the diff in /etc:
|
||||
|
||||
diff --git a/ceph/ceph.conf b/ceph/ceph.conf
|
||||
index 17c676a..cf2f502 100644
|
||||
--- a/ceph/ceph.conf
|
||||
+++ b/ceph/ceph.conf
|
||||
@@ -1,4 +1,5 @@
|
||||
[global]
|
||||
+osd crush location hook = /usr/bin/calamari-crush-location
|
||||
fsid = 783fcc91-e95d-4ce3-b9c2-0a414a4751d3
|
||||
mon_initial_members = node-1
|
||||
mon_host = 192.168.0.3
|
||||
diff --git a/default/diamond b/default/diamond
|
||||
index deda518..c936044 100644
|
||||
--- a/default/diamond
|
||||
+++ b/default/diamond
|
||||
@@ -9,4 +9,4 @@
|
||||
# Additional options that are passed to the Daemon.
|
||||
ENABLE_DIAMOND="yes"
|
||||
DIAMOND_PID="/var/run/diamond.pid"
|
||||
-DIAMOND_USER="diamond"
|
||||
+DIAMOND_USER="root"
|
||||
|
||||
- Do the conf changes will step over puppet? How can we manage salt
|
||||
and puppet to not step on each other?
|
||||
|
||||
- Figure out how to do proper testing and CI (we do not have hardware
|
||||
resources for this)
|
||||
|
||||
- Reproducible build of the packages included in the plugin.
|
||||
|
||||
- UI: Does make sense to enable the plugin only if there is some ceph
|
||||
depoyed?
|
||||
|
||||
- What happens in case of node ceph node addition?
|
||||
What happens in case of node ceph node removal?
|
||||
|
||||
The puppet code is executed in the new node. But not on the
|
||||
calamari server. This blueprint addressed the problem:
|
||||
|
||||
https://blueprints.launchpad.net/fuel/+spec/fuel-task-notify-other-nodes
|
1
deployment_scripts/puppet/manifests/calamari-agent.pp
Normal file
1
deployment_scripts/puppet/manifests/calamari-agent.pp
Normal file
@ -0,0 +1 @@
|
||||
include fuel_plugin_calamari::agent::init
|
3
deployment_scripts/puppet/manifests/calamari-salt.pp
Normal file
3
deployment_scripts/puppet/manifests/calamari-salt.pp
Normal file
@ -0,0 +1,3 @@
|
||||
if($::osfamily == 'Redhat') {
|
||||
include fuel_plugin_calamari::centos_salt::init
|
||||
}
|
3
deployment_scripts/puppet/manifests/calamari-server.pp
Normal file
3
deployment_scripts/puppet/manifests/calamari-server.pp
Normal file
@ -0,0 +1,3 @@
|
||||
if 'calamari' == hiera('user_node_name') {
|
||||
include fuel_plugin_calamari::server::init
|
||||
}
|
5
deployment_scripts/puppet/manifests/complete-centos.pp
Normal file
5
deployment_scripts/puppet/manifests/complete-centos.pp
Normal file
@ -0,0 +1,5 @@
|
||||
if 'calamari' == hiera('user_node_name') {
|
||||
if($::osfamily == 'Redhat') {
|
||||
include fuel_plugin_calamari::centos_salt::complete_centos
|
||||
}
|
||||
}
|
3
deployment_scripts/puppet/manifests/restart-salt.pp
Normal file
3
deployment_scripts/puppet/manifests/restart-salt.pp
Normal file
@ -0,0 +1,3 @@
|
||||
if($::osfamily == 'Redhat') {
|
||||
include fuel_plugin_calamari::centos_salt::restart
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
name 'fuel_plugin_calamari'
|
||||
version '0.1.0'
|
||||
source 'UNKNOWN'
|
||||
author 'fuel'
|
||||
license 'Apache License, Version 2.0'
|
||||
summary 'UNKNOWN'
|
||||
description 'UNKNOWN'
|
||||
project_page 'UNKNOWN'
|
||||
|
||||
## Add dependencies, if any:
|
||||
# dependency 'username/name', '>= 1.2.0'
|
@ -0,0 +1,16 @@
|
||||
fuel_plugin_calamari
|
||||
|
||||
This is the fuel_plugin_calamari module.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
|
||||
Contact
|
||||
-------
|
||||
|
||||
|
||||
Support
|
||||
-------
|
||||
|
||||
Please log tickets and issues at our [Projects site](https://github.com/stackforge/fuel-plugin-calamari)
|
@ -0,0 +1,91 @@
|
||||
|
||||
"""
|
||||
Wrap all our salt imports into one module. We do this
|
||||
to make it clear which parts of the salt API (or internals)
|
||||
we are touching, and to make it easy to globally handle a
|
||||
salt ImportError e.g. for building docs in lightweight
|
||||
environment.
|
||||
"""
|
||||
|
||||
|
||||
import gevent
|
||||
import logging
|
||||
|
||||
|
||||
try:
|
||||
try:
|
||||
from salt.client import condition_kwarg
|
||||
except ImportError:
|
||||
# Salt moved this in 382dd5e
|
||||
from salt.utils.args import condition_input as condition_kwarg
|
||||
|
||||
from salt.client import LocalClient # noqa
|
||||
from salt.utils.event import MasterEvent # noqa
|
||||
from salt.key import Key # noqa
|
||||
from salt.config import master_config # noqa
|
||||
from salt.utils.master import MasterPillarUtil # noqa
|
||||
from salt.config import client_config # noqa
|
||||
try:
|
||||
from salt.loader import _create_loader
|
||||
except ImportError:
|
||||
# Salt removed this in b0e1425
|
||||
from salt.loader import static_loader as _create_loader
|
||||
except ImportError:
|
||||
condition_kwarg = None
|
||||
LocalClient = None
|
||||
MasterEvent = None
|
||||
Key = None
|
||||
master_config = None
|
||||
MasterPillarUtil = None
|
||||
client_config = lambda x: None
|
||||
_create_loader = None
|
||||
|
||||
|
||||
class SaltEventSource(object):
|
||||
"""
|
||||
A wrapper around salt's MasterEvent class that closes and re-opens
|
||||
the connection if it goes quiet for too long, to ward off mysterious
|
||||
silent-death of communications (#8144)
|
||||
"""
|
||||
|
||||
# Not a logical timeout, just how long we stick inside a get_event call
|
||||
POLL_TIMEOUT = 5
|
||||
|
||||
# After this long without messages, close and reopen out connection to
|
||||
# salt-master. Don't want to do this gratuitously because it can drop
|
||||
# messages during the cutover (lossiness is functionally OK but user
|
||||
# might notice).
|
||||
SILENCE_TIMEOUT = 20
|
||||
|
||||
def __init__(self, logger, config):
|
||||
"""
|
||||
:param config: a salt client_config instance
|
||||
"""
|
||||
# getChild isn't in 2.6
|
||||
self._log = logging.getLogger('.'.join((logger.name, 'salt')))
|
||||
self._silence_counter = 0
|
||||
self._config = config
|
||||
self._master_event = MasterEvent(self._config['sock_dir'])
|
||||
|
||||
def _destroy_conn(self, old_ev):
|
||||
old_ev.destroy()
|
||||
|
||||
def get_event(self, *args, **kwargs):
|
||||
"""
|
||||
Wrap MasterEvent.get_event
|
||||
"""
|
||||
ev = self._master_event.get_event(self.POLL_TIMEOUT, *args, **kwargs)
|
||||
if ev is None:
|
||||
self._silence_counter += self.POLL_TIMEOUT
|
||||
if self._silence_counter > self.SILENCE_TIMEOUT:
|
||||
self._log.warning("Re-opening connection to salt-master")
|
||||
|
||||
self._silence_counter = 0
|
||||
# Re-open the connection as a precaution against this lack of
|
||||
# messages being a symptom of a connection that has gone bad.
|
||||
old_ev = self._master_event
|
||||
gevent.spawn(lambda: self._destroy_conn(old_ev))
|
||||
self._master_event = MasterEvent(self._config['sock_dir'])
|
||||
else:
|
||||
self._silence_counter = 0
|
||||
return ev
|
@ -0,0 +1,34 @@
|
||||
# Copyright 2015 CREATE-NET
|
||||
#
|
||||
# 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 fuel_plugin_calamari::agent::init {
|
||||
|
||||
notice('Starting calamari-agent manifest')
|
||||
|
||||
include fuel_plugin_calamari::agent::params
|
||||
|
||||
package { $fuel_plugin_calamari::agent::params::packages:
|
||||
ensure => present,
|
||||
}->
|
||||
file { $fuel_plugin_calamari::agent::params::salt_file:
|
||||
ensure => file,
|
||||
content => "master: ${fuel_plugin_calamari::agent::params::calamari_ip}"
|
||||
}~>
|
||||
service{ $fuel_plugin_calamari::agent::params::services:
|
||||
enable => true,
|
||||
}
|
||||
|
||||
notice('End of calamari-agent manifest')
|
||||
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
# == Class: fuel_plugin_calamari::agent::params
|
||||
#
|
||||
# A basic class for calamari plugin params
|
||||
#
|
||||
|
||||
class fuel_plugin_calamari::agent::params {
|
||||
|
||||
if($::osfamily == 'Redhat') {
|
||||
|
||||
$salt_file = '/etc/salt/minion'
|
||||
|
||||
$packages = ['diamond', 'salt-minion']
|
||||
$services = ['salt-minion']
|
||||
|
||||
} elsif($::osfamily == 'Debian') {
|
||||
|
||||
$salt_file = '/etc/salt/minion.d/calamari.conf'
|
||||
|
||||
$packages = ['diamond', 'salt-minion']
|
||||
$services = ['salt-minion']
|
||||
|
||||
} else {
|
||||
|
||||
fail("Unsupported osfamily ${::osfamily}")
|
||||
|
||||
}
|
||||
|
||||
# Search for the calamari ip address from user_node_name and use the
|
||||
# first one
|
||||
$calamari_nodes = filter_nodes(hiera('nodes'), 'user_node_name', 'calamari')
|
||||
|
||||
if size($calamari_nodes) < 1 {
|
||||
fail('Could not find node "calamari" in the environment')
|
||||
}
|
||||
|
||||
# TODO: figure out if this ip is in the correct network
|
||||
$calamari_ip = $calamari_nodes[0]['internal_address']
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
# Copyright 2015 CREATE-NET
|
||||
#
|
||||
# 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 fuel_plugin_calamari::centos_salt::complete_centos {
|
||||
|
||||
exec { 'salt accept keys':
|
||||
command => 'salt-key --yes --accept-all',
|
||||
path => '/usr/local/sbin/:/usr/bin:/usr/sbin:/bin/:/sbin/',
|
||||
}
|
||||
|
||||
exec { 'restart cthulhu':
|
||||
command => 'supervisorctl restart cthulhu',
|
||||
path => '/usr/local/sbin/:/usr/bin:/usr/sbin:/bin/:/sbin/',
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
# Copyright 2015 CREATE-NET
|
||||
#
|
||||
# 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 fuel_plugin_calamari::centos_salt::init {
|
||||
|
||||
notice('Starting centos_salt manifest')
|
||||
|
||||
include fuel_plugin_calamari::centos_salt::params
|
||||
|
||||
package { $fuel_plugin_calamari::centos_salt::params::packages:
|
||||
ensure => present,
|
||||
}->
|
||||
service{ $fuel_plugin_calamari::centos_salt::params::services:
|
||||
enable => true,
|
||||
}->
|
||||
exec { 'add_epel_key':
|
||||
command => '/bin/rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6'
|
||||
}
|
||||
notice('End of centos_salt manifest')
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
# == Class: fuel_plugin_calamari::centos_salt::params
|
||||
#
|
||||
# A basic class for calamari plugin params
|
||||
#
|
||||
|
||||
class fuel_plugin_calamari::centos_salt::params {
|
||||
|
||||
if($::osfamily == 'Redhat') {
|
||||
|
||||
$packages = ['epel-release-6-8']
|
||||
$services = []
|
||||
|
||||
} else {
|
||||
|
||||
fail("Unsupported osfamily ${::osfamily}")
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
# Copyright 2015 CREATE-NET
|
||||
#
|
||||
# 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 fuel_plugin_calamari::centos_salt::restart {
|
||||
|
||||
notice('Starting salt-minion restart')
|
||||
|
||||
#For unknow reason it is needed that salt-minion is restarted after some time
|
||||
exec { 'sleep':
|
||||
command => 'sleep 60',
|
||||
path => '/usr/local/sbin/:/usr/bin:/usr/sbin:/bin/:/sbin/'
|
||||
}->
|
||||
|
||||
exec { 'restart salt-minion':
|
||||
command => 'service salt-minion restart',
|
||||
path => '/usr/local/sbin/:/usr/bin:/usr/sbin:/bin/:/sbin/'
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
# == Class: fuel_plugin_calamari
|
||||
#
|
||||
# Full description of class plugin-calamari here.
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# Document parameters here.
|
||||
#
|
||||
# [*sample_parameter*]
|
||||
# Explanation of what this parameter affects and what it defaults to.
|
||||
# e.g. "Specify one or more upstream ntp servers as an array."
|
||||
#
|
||||
# === Variables
|
||||
#
|
||||
# Here you should define a list of variables that this module would require.
|
||||
#
|
||||
# [*sample_variable*]
|
||||
# Explanation of how this variable affects the funtion of this class and if
|
||||
# it has a default. e.g. "The parameter enc_ntp_servers must be set by the
|
||||
# External Node Classifier as a comma separated list of hostnames." (Note,
|
||||
# global variables should be avoided in favor of class parameters as
|
||||
# of Puppet 2.6.)
|
||||
#
|
||||
# === Examples
|
||||
#
|
||||
# class { fuel_plugin_calamari:
|
||||
# servers => [ 'pool.ntp.org', 'ntp.local.company.com' ],
|
||||
# }
|
||||
#
|
||||
# === Authors
|
||||
#
|
||||
# Daniele Pizzolli <daniele.pizzolli@create-net.org>
|
||||
#
|
||||
# === Copyright
|
||||
#
|
||||
# Copyright 2015 CREATE-NET
|
||||
#
|
@ -0,0 +1,116 @@
|
||||
# Copyright 2015 CREATE-NET
|
||||
#
|
||||
# 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 redhat_init{
|
||||
if($::osfamily == 'Redhat') {
|
||||
|
||||
notice('Starting redhat_init')
|
||||
|
||||
#Needed for calamari server config
|
||||
file { '/etc/init.d/postgresql':
|
||||
ensure => link,
|
||||
target => '/etc/init.d/postgresql-9.3'
|
||||
}->
|
||||
|
||||
exec { 'init postgres db':
|
||||
command => 'service postgresql-9.3 initdb',
|
||||
path => '/usr/local/sbin/:/usr/bin:/usr/sbin:/bin/:/sbin/'
|
||||
}->
|
||||
|
||||
exec { 'start postgres':
|
||||
command => 'service postgresql-9.3 start',
|
||||
path => '/usr/local/sbin/:/usr/bin:/usr/sbin:/bin/:/sbin/'
|
||||
}->
|
||||
|
||||
exec { 'start httpd':
|
||||
command => 'service httpd start',
|
||||
path => '/usr/local/sbin/:/usr/bin:/usr/sbin:/bin/:/sbin/'
|
||||
}->
|
||||
|
||||
file { 'wrapper_salt':
|
||||
source => 'puppet:///modules/fuel_plugin_calamari/salt_wrapper.py',
|
||||
path => '/opt/calamari/venv/lib/python2.6/site-packages/calamari_common-0.1-py2.6.egg/calamari_common/salt_wrapper.py',
|
||||
recurse => true,
|
||||
mode => '0777'
|
||||
}->
|
||||
|
||||
file { '/var/lib/pgsql/data':
|
||||
ensure => 'directory',
|
||||
owner => 'postgres',
|
||||
group => 'postgres'
|
||||
}->
|
||||
|
||||
file { '/var/lib/pgsql/data/pg_hba.conf':
|
||||
ensure => 'link',
|
||||
target => '/var/lib/pgsql/9.3/data/pg_hba.conf',
|
||||
owner => 'postgres',
|
||||
group => 'postgres'
|
||||
}->
|
||||
|
||||
exec { 'postgres trust':
|
||||
command => 'sed -ir "s/ident/trust/" /var/lib/pgsql/data/pg_hba.conf && sed -ir "s/peer/trust/" /var/lib/pgsql/data/pg_hba.conf && sed -ir "s/ident/trust/" /var/lib/pgsql/9.3/data/pg_hba.conf && sed -ir "s/peer/trust/" /var/lib/pgsql/9.3/data/pg_hba.conf',
|
||||
path => '/usr/local/sbin/:/usr/bin:/usr/sbin:/bin/:/sbin/'
|
||||
}->
|
||||
|
||||
exec {'restart postgres' :
|
||||
command => '/etc/init.d/postgresql-9.3 restart',
|
||||
path =>'/usr/local/sbin/:/usr/bin:/usr/sbin:/bin/:/sbin/'
|
||||
}
|
||||
|
||||
notice('Finish redhat_init')
|
||||
}
|
||||
}
|
||||
|
||||
class fuel_plugin_calamari::server::init {
|
||||
|
||||
notice('Starting calamari-server manifest')
|
||||
|
||||
include fuel_plugin_calamari::server::params
|
||||
|
||||
package { $fuel_plugin_calamari::server::params::packages:
|
||||
ensure => present,
|
||||
}->
|
||||
# TODO: wait for minion deploy! How? Does the order in tasks.yaml suffice?
|
||||
exec { 'salt accept keys':
|
||||
command => 'salt-key --yes --accept-all',
|
||||
path => '/usr/local/sbin/:/usr/bin:/usr/sbin:/bin/:/sbin/',
|
||||
# Config of calamari
|
||||
}->
|
||||
class {'redhat_init':}
|
||||
|
||||
# service { 'db before':
|
||||
# name => 'postgresql-9.3',
|
||||
# enable => true,
|
||||
# }->
|
||||
|
||||
# service { 'http before':
|
||||
# name => 'httpd',
|
||||
# enable => true,
|
||||
# }->
|
||||
|
||||
# notice('Starting redhat_init')
|
||||
|
||||
exec { 'calamari server config':
|
||||
command => "calamari-ctl initialize --admin-username='${fuel_plugin_calamari::server::params::username}' --admin-password='${fuel_plugin_calamari::server::params::password}' --admin-email='${fuel_plugin_calamari::server::params::email}'",
|
||||
path => '/usr/local/sbin/:/usr/bin:/usr/sbin:/bin/:/sbin/',
|
||||
}->
|
||||
|
||||
# Restart apache2 to load the correct config (if not we have some
|
||||
# errors in the gui)
|
||||
service { $fuel_plugin_calamari::server::params::services:
|
||||
enable => true,
|
||||
}
|
||||
|
||||
notice('End of calamari-server manifest')
|
||||
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
# Copyright 2015 CREATE-NET
|
||||
#
|
||||
# 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: fuel_plugin_calamari::server::params
|
||||
#
|
||||
# A basic class for calamari plugin params
|
||||
#
|
||||
|
||||
class fuel_plugin_calamari::server::params {
|
||||
|
||||
if($::osfamily == 'Redhat') {
|
||||
|
||||
$packages = ['calamari-server', 'calamari-clients']
|
||||
$services = ['httpd', 'postgresql-9.3']
|
||||
|
||||
} elsif($::osfamily == 'Debian') {
|
||||
|
||||
$packages = ['calamari-server', 'calamari-clients']
|
||||
$services = ['apache2']
|
||||
|
||||
} else {
|
||||
|
||||
fail("Unsupported osfamily ${::osfamily}")
|
||||
|
||||
}
|
||||
|
||||
# General configuration
|
||||
$settings = hiera('fuel-plugin-calamari')
|
||||
|
||||
$username = $settings['fuel-plugin-calamari_username']
|
||||
$password = $settings['fuel-plugin-calamari_password']
|
||||
$email = $settings['fuel-plugin-calamari_email']
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
dir = File.expand_path(File.dirname(__FILE__))
|
||||
$LOAD_PATH.unshift File.join(dir, 'lib')
|
||||
|
||||
require 'mocha'
|
||||
require 'puppet'
|
||||
require 'rspec'
|
||||
require 'spec/autorun'
|
||||
|
||||
Spec::Runner.configure do |config|
|
||||
config.mock_with :mocha
|
||||
end
|
||||
|
||||
# We need this because the RAL uses 'should' as a method. This
|
||||
# allows us the same behaviour but with a different method name.
|
||||
class Object
|
||||
alias :must :should
|
||||
end
|
@ -0,0 +1,12 @@
|
||||
# The baseline for module testing used by Puppet Labs is that each manifest
|
||||
# should have a corresponding test manifest that declares that class or defined
|
||||
# type.
|
||||
#
|
||||
# Tests are then run by using puppet apply --noop (to check for compilation
|
||||
# errors and view a log of events) or by fully applying the test in a virtual
|
||||
# environment (to compare the resulting system state to the desired state).
|
||||
#
|
||||
# Learn more about module testing here:
|
||||
# http://docs.puppetlabs.com/guides/tests_smoke.html
|
||||
#
|
||||
include fuel_plugin_calamari
|
192
doc/Makefile
Normal file
192
doc/Makefile
Normal file
@ -0,0 +1,192 @@
|
||||
# Makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build
|
||||
PAPER =
|
||||
BUILDDIR = build
|
||||
|
||||
# User-friendly check for sphinx-build
|
||||
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
|
||||
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
|
||||
endif
|
||||
|
||||
# Internal variables.
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||
PAPEROPT_letter = -D latex_paper_size=letter
|
||||
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
|
||||
# the i18n builder cannot share the environment and doctrees with the others
|
||||
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
|
||||
|
||||
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext
|
||||
|
||||
help:
|
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " html to make standalone HTML files"
|
||||
@echo " dirhtml to make HTML files named index.html in directories"
|
||||
@echo " singlehtml to make a single large HTML file"
|
||||
@echo " pickle to make pickle files"
|
||||
@echo " json to make JSON files"
|
||||
@echo " htmlhelp to make HTML files and a HTML help project"
|
||||
@echo " qthelp to make HTML files and a qthelp project"
|
||||
@echo " applehelp to make an Apple Help Book"
|
||||
@echo " devhelp to make HTML files and a Devhelp project"
|
||||
@echo " epub to make an epub"
|
||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
||||
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
|
||||
@echo " text to make text files"
|
||||
@echo " man to make manual pages"
|
||||
@echo " texinfo to make Texinfo files"
|
||||
@echo " info to make Texinfo files and run them through makeinfo"
|
||||
@echo " gettext to make PO message catalogs"
|
||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
||||
@echo " xml to make Docutils-native XML files"
|
||||
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
|
||||
@echo " linkcheck to check all external links for integrity"
|
||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||
@echo " coverage to run coverage check of the documentation (if enabled)"
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILDDIR)/*
|
||||
|
||||
html:
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||
|
||||
dirhtml:
|
||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
||||
|
||||
singlehtml:
|
||||
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
||||
|
||||
pickle:
|
||||
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
||||
@echo
|
||||
@echo "Build finished; now you can process the pickle files."
|
||||
|
||||
json:
|
||||
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
||||
@echo
|
||||
@echo "Build finished; now you can process the JSON files."
|
||||
|
||||
htmlhelp:
|
||||
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||
".hhp project file in $(BUILDDIR)/htmlhelp."
|
||||
|
||||
qthelp:
|
||||
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/fuel-plugin-calamari.qhcp"
|
||||
@echo "To view the help file:"
|
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/fuel-plugin-calamari.qhc"
|
||||
|
||||
applehelp:
|
||||
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
|
||||
@echo
|
||||
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
|
||||
@echo "N.B. You won't be able to view it unless you put it in" \
|
||||
"~/Library/Documentation/Help or install it in your application" \
|
||||
"bundle."
|
||||
|
||||
devhelp:
|
||||
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
||||
@echo
|
||||
@echo "Build finished."
|
||||
@echo "To view the help file:"
|
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/fuel-plugin-calamari"
|
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/fuel-plugin-calamari"
|
||||
@echo "# devhelp"
|
||||
|
||||
epub:
|
||||
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
||||
@echo
|
||||
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
||||
|
||||
latex:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo
|
||||
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
||||
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||
"(use \`make latexpdf' here to do that automatically)."
|
||||
|
||||
latexpdf:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo "Running LaTeX files through pdflatex..."
|
||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
latexpdfja:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo "Running LaTeX files through platex and dvipdfmx..."
|
||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
text:
|
||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||
@echo
|
||||
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
||||
|
||||
man:
|
||||
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
||||
@echo
|
||||
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
||||
|
||||
texinfo:
|
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||
@echo
|
||||
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
|
||||
@echo "Run \`make' in that directory to run these through makeinfo" \
|
||||
"(use \`make info' here to do that automatically)."
|
||||
|
||||
info:
|
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||
@echo "Running Texinfo files through makeinfo..."
|
||||
make -C $(BUILDDIR)/texinfo info
|
||||
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
|
||||
|
||||
gettext:
|
||||
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
|
||||
@echo
|
||||
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
|
||||
|
||||
changes:
|
||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
||||
@echo
|
||||
@echo "The overview file is in $(BUILDDIR)/changes."
|
||||
|
||||
linkcheck:
|
||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
||||
@echo
|
||||
@echo "Link check complete; look for any errors in the above output " \
|
||||
"or in $(BUILDDIR)/linkcheck/output.txt."
|
||||
|
||||
doctest:
|
||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||
@echo "Testing of doctests in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/doctest/output.txt."
|
||||
|
||||
coverage:
|
||||
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
|
||||
@echo "Testing of coverage in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/coverage/python.txt."
|
||||
|
||||
xml:
|
||||
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
|
||||
@echo
|
||||
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
|
||||
|
||||
pseudoxml:
|
||||
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
|
||||
@echo
|
||||
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
|
BIN
doc/source/_static/calamari-ip.png
Normal file
BIN
doc/source/_static/calamari-ip.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
BIN
doc/source/_static/calamari-name.png
Normal file
BIN
doc/source/_static/calamari-name.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
BIN
doc/source/_static/settings-calamari.png
Normal file
BIN
doc/source/_static/settings-calamari.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.3 KiB |
BIN
doc/source/_static/settings-calamari_fuel70.png
Normal file
BIN
doc/source/_static/settings-calamari_fuel70.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
291
doc/source/conf.py
Normal file
291
doc/source/conf.py
Normal file
@ -0,0 +1,291 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# fuel-plugin-calamari documentation build configuration file, created by
|
||||
# sphinx-quickstart on Tue Jul 14 11:04:14 2015.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to its
|
||||
# containing dir.
|
||||
#
|
||||
# Note that not all possible configuration values are present in this
|
||||
# autogenerated file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
import sys
|
||||
import os
|
||||
import shlex
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
#sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#needs_sphinx = '1.0'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
'sphinx.ext.intersphinx',
|
||||
'sphinx.ext.todo',
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix(es) of source filenames.
|
||||
# You can specify multiple suffix as a list of string:
|
||||
# source_suffix = ['.rst', '.md']
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
#source_encoding = 'utf-8-sig'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'fuel-plugin-calamari'
|
||||
copyright = u'2015, Daniele Pizzolli'
|
||||
author = u'Daniele Pizzolli'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '1.1.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '1.1.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = None
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
#today = ''
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = []
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all
|
||||
# documents.
|
||||
#default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
#add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
#add_module_names = True
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
#show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
# A list of ignored prefixes for module index sorting.
|
||||
#modindex_common_prefix = []
|
||||
|
||||
# If true, keep warnings as "system message" paragraphs in the built documents.
|
||||
#keep_warnings = False
|
||||
|
||||
# If true, `todo` and `todoList` produce output, else they produce nothing.
|
||||
todo_include_todos = True
|
||||
|
||||
|
||||
# -- Options for HTML output ----------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
html_theme = 'alabaster'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
#html_theme_options = {}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
#html_theme_path = []
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = None
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
#html_logo = None
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
#html_favicon = None
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
# .htaccess) here, relative to this directory. These files are copied
|
||||
# directly to the root of the documentation.
|
||||
#html_extra_path = []
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
#html_last_updated_fmt = '%b %d, %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
#html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
#html_domain_indices = True
|
||||
|
||||
# If false, no index is generated.
|
||||
#html_use_index = True
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
#html_split_index = False
|
||||
|
||||
# If true, links to the reST sources are added to the pages.
|
||||
#html_show_sourcelink = True
|
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||
#html_show_sphinx = True
|
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||
#html_show_copyright = True
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
#html_use_opensearch = ''
|
||||
|
||||
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
#html_file_suffix = None
|
||||
|
||||
# Language to be used for generating the HTML full-text search index.
|
||||
# Sphinx supports the following languages:
|
||||
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
|
||||
# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
|
||||
#html_search_language = 'en'
|
||||
|
||||
# A dictionary with options for the search language support, empty by default.
|
||||
# Now only 'ja' uses this config value
|
||||
#html_search_options = {'type': 'default'}
|
||||
|
||||
# The name of a javascript file (relative to the configuration directory) that
|
||||
# implements a search results scorer. If empty, the default will be used.
|
||||
#html_search_scorer = 'scorer.js'
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'fuel-plugin-calamaridoc'
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#'preamble': '',
|
||||
|
||||
# Latex figure (float) alignment
|
||||
#'figure_align': 'htbp',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, ''.join(('fuel-plugin-calamari-', version, '.tex')), u'fuel-plugin-calamari Documentation',
|
||||
u'Daniele Pizzolli', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#latex_use_parts = False
|
||||
|
||||
# If true, show page references after internal links.
|
||||
#latex_show_pagerefs = False
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#latex_show_urls = False
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output ---------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
(master_doc, 'fuel-plugin-calamari', u'fuel-plugin-calamari Documentation',
|
||||
[author], 1)
|
||||
]
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#man_show_urls = False
|
||||
|
||||
|
||||
# -- Options for Texinfo output -------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(master_doc, 'fuel-plugin-calamari', u'fuel-plugin-calamari Documentation',
|
||||
author, 'fuel-plugin-calamari', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#texinfo_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#texinfo_domain_indices = True
|
||||
|
||||
# How to display URL addresses: 'footnote', 'no', or 'inline'.
|
||||
#texinfo_show_urls = 'footnote'
|
||||
|
||||
# If true, do not generate a @detailmenu in the "Top" node's menu.
|
||||
#texinfo_no_detailmenu = False
|
||||
|
||||
|
||||
# Example configuration for intersphinx: refer to the Python standard library.
|
||||
intersphinx_mapping = {'https://docs.python.org/': None}
|
26
doc/source/index.rst
Normal file
26
doc/source/index.rst
Normal file
@ -0,0 +1,26 @@
|
||||
.. fuel-plugin-calamari documentation master file, created by
|
||||
sphinx-quickstart on Tue Jul 14 11:04:14 2015.
|
||||
You can adapt this file completely to your liking, but it should at least
|
||||
contain the root `toctree` directive.
|
||||
|
||||
Welcome to fuel-plugin-calamari's documentation!
|
||||
================================================
|
||||
|
||||
Contents:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
installation-guide
|
||||
user-guide
|
||||
|
||||
|
||||
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`modindex`
|
||||
* :ref:`search`
|
||||
|
61
doc/source/installation-guide.rst
Normal file
61
doc/source/installation-guide.rst
Normal file
@ -0,0 +1,61 @@
|
||||
Installation Guide
|
||||
==================
|
||||
|
||||
Prerequisites
|
||||
+++++++++++++
|
||||
|
||||
+----------------------------------+-----------------+
|
||||
| Requirement | Version/Comment |
|
||||
+==================================+=================+
|
||||
| Mirantis OpenStack compatility | 6.1 or higher |
|
||||
+----------------------------------+-----------------+
|
||||
| Distribution Supported | Ubuntu |
|
||||
+----------------------------------+-----------------+
|
||||
|
||||
Where to download the plugin
|
||||
++++++++++++++++++++++++++++
|
||||
|
||||
The plugin in not yet distribuited as package. You have to build it
|
||||
yourself.
|
||||
|
||||
The code is hosted by `SmartInfrastructures
|
||||
<https://github.com/SmartInfrastructures/fuel-plugin-calamari>`_ But
|
||||
it will be moved on `stackforge
|
||||
<https://github.com/stackforge/fuel-plugin-calamari>`_ soon.
|
||||
|
||||
How to build the plugin
|
||||
+++++++++++++++++++++++
|
||||
|
||||
Please refer to the `Fuel Plugins wiki
|
||||
<https://wiki.openstack.org/wiki/Fuel/Plugins>`_ to build the plugin
|
||||
by yourself, version 2.0.0 (or higher) of the Fuel Plugin Builder is
|
||||
required.
|
||||
|
||||
.. code:: bash
|
||||
|
||||
git clone https://github.com/SmartInfrastructures/fuel-plugin-calamari.git
|
||||
cd fuel-plugin-calamari
|
||||
fuel-plugin-builder --build .
|
||||
|
||||
How to install the plugin
|
||||
+++++++++++++++++++++++++
|
||||
|
||||
Copy the plugin file to the Fuel Master node.
|
||||
|
||||
.. code:: bash
|
||||
|
||||
scp fuel-plugin-calamari*rpm root@<Fuel Master node IP address>:
|
||||
|
||||
Install the plugin using the fuel command line:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
ssh root@<Fuel Master node IP address>
|
||||
fuel plugins --install fuel-plugin-calamari*.rpm
|
||||
|
||||
Verify that the plugin is installed correctly:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
fuel plugins --list
|
||||
|
50
doc/source/user-guide.rst
Normal file
50
doc/source/user-guide.rst
Normal file
@ -0,0 +1,50 @@
|
||||
User Guide
|
||||
==========
|
||||
|
||||
Intro
|
||||
+++++
|
||||
|
||||
- Create a new environment with the Fuel UI wizard. At the moment
|
||||
only the Ubuntu distribution is supported.
|
||||
|
||||
- Click on the Settings tab of the Fuel web UI.
|
||||
|
||||
For fuel version 7.0: select the “Calamari Installer” tab, enable
|
||||
the plugin by clicking on the “Calamari Installer” checkbox and
|
||||
fill-in the required fiels:
|
||||
|
||||
.. image:: _static/settings-calamari_fuel70.png
|
||||
:alt: A screen-shot of the Calamari Settings UI
|
||||
:scale: 90%
|
||||
|
||||
- For fuel version 6.1: scroll down the page, select the calamari
|
||||
plugin check-box and fill-in the required fields. The interface
|
||||
looks like the following:
|
||||
|
||||
.. image:: _static/settings-calamari.png
|
||||
:alt: A screen-shot of the Calamari Settings UI
|
||||
:scale: 90%
|
||||
|
||||
- Go to the nodes page.
|
||||
|
||||
- Add a base-os node and rename the base-os host as “calamari”:
|
||||
|
||||
.. image:: _static/calamari-name.png
|
||||
:alt: A screen-shot of the Calamari host name
|
||||
:scale: 90%
|
||||
|
||||
- Some minutes after the deploy is ready (currently the Fuel UI
|
||||
display "Ready" on the nodes, even some plugin has not yet finished)
|
||||
you can browse the calamari interface on the calamari server. You
|
||||
have to figure out the address of the server from the network info
|
||||
pop-up:
|
||||
|
||||
.. image:: _static/calamari-ip.png
|
||||
:alt: A screen-shot of the Calamari host IP
|
||||
:scale: 90%
|
||||
|
||||
How to use the plugin
|
||||
+++++++++++++++++++++
|
||||
|
||||
Have a look to the still rough `calamari documentation
|
||||
<https://ceph.com/category/calamari/>`_.
|
28
environment_config.yaml
Normal file
28
environment_config.yaml
Normal file
@ -0,0 +1,28 @@
|
||||
attributes:
|
||||
fuel-plugin-calamari_username:
|
||||
value: "admin"
|
||||
label: "Admin Username"
|
||||
description: "Calamari Admin Username"
|
||||
weight: 25
|
||||
type: "text"
|
||||
regex:
|
||||
source: '^[\S]{4,}$'
|
||||
error: "You must provide an username with at least 4 characters"
|
||||
fuel-plugin-calamari_password:
|
||||
value: "admin"
|
||||
label: "Admin Password"
|
||||
description: "Calamari Admin Password"
|
||||
weight: 25
|
||||
type: "password"
|
||||
regex:
|
||||
source: '^[\S]{4,}$'
|
||||
error: "You must provide a password with at least 4 characters"
|
||||
fuel-plugin-calamari_email:
|
||||
value: "admin@localhost.invalid"
|
||||
label: "Admin Email"
|
||||
description: "Calamari Admin Email"
|
||||
weight: 40
|
||||
type: "text"
|
||||
regex:
|
||||
source: '^\S+@\S+$'
|
||||
error: "Invalid email"
|
39
metadata.yaml
Normal file
39
metadata.yaml
Normal file
@ -0,0 +1,39 @@
|
||||
# Plugin name
|
||||
name: fuel-plugin-calamari
|
||||
# Human-readable name for your plugin
|
||||
title: Calamari Installer
|
||||
# Plugin version
|
||||
version: '1.1.0'
|
||||
# Description
|
||||
description: "An installer for Calamari: a management and monitoring system for Ceph storage cluster"
|
||||
# Required fuel version
|
||||
fuel_version: ['6.1', '7.0']
|
||||
# Specify license of your plugin
|
||||
licenses: ['Apache License Version 2.0']
|
||||
# Specify author or company name
|
||||
authors: ['CREATE-NET']
|
||||
# A link to the plugin's page
|
||||
homepage: 'https://github.com/stackforge/fuel-plugin-calamari'
|
||||
# Specify a group which your plugin implements, possible options:
|
||||
# network, storage, storage::cinder, storage::glance, hypervisor
|
||||
groups: ['storage']
|
||||
|
||||
# The plugin is compatible with releases in the list
|
||||
releases:
|
||||
- os: ubuntu
|
||||
version: 2014.2-6.1
|
||||
mode: ['ha', 'multinode']
|
||||
deployment_scripts_path: deployment_scripts/
|
||||
repository_path: repositories/ubuntu
|
||||
- os: centos
|
||||
version: 2014.2-6.1
|
||||
mode: ['ha', 'multinode']
|
||||
deployment_scripts_path: deployment_scripts/
|
||||
repository_path: repositories/centos
|
||||
- os: ubuntu
|
||||
version: 2015.1.0-7.0
|
||||
mode: ['ha', 'multinode']
|
||||
deployment_scripts_path: deployment_scripts/
|
||||
repository_path: repositories/ubuntu
|
||||
# Version of plugin package
|
||||
package_version: '2.0.0'
|
5
pre_build_hook
Executable file
5
pre_build_hook
Executable file
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Add here any the actions which are required before plugin build
|
||||
# like packages building, packages downloading from mirrors and so on.
|
||||
# The script should return 0 if there were no errors.
|
0
repositories/centos/.gitkeep
Normal file
0
repositories/centos/.gitkeep
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
repositories/centos/diamond-3.4.67-0.noarch.rpm
Normal file
BIN
repositories/centos/diamond-3.4.67-0.noarch.rpm
Normal file
Binary file not shown.
BIN
repositories/centos/diamond-3.4.67-1.noarch.rpm
Normal file
BIN
repositories/centos/diamond-3.4.67-1.noarch.rpm
Normal file
Binary file not shown.
BIN
repositories/centos/epel-release-6-8.noarch.rpm
Normal file
BIN
repositories/centos/epel-release-6-8.noarch.rpm
Normal file
Binary file not shown.
BIN
repositories/centos/libcairo-1.14.2-alt1.x86_64.rpm
Normal file
BIN
repositories/centos/libcairo-1.14.2-alt1.x86_64.rpm
Normal file
Binary file not shown.
BIN
repositories/centos/pycairo-1.8.6-2.1.el6.x86_64.rpm
Normal file
BIN
repositories/centos/pycairo-1.8.6-2.1.el6.x86_64.rpm
Normal file
Binary file not shown.
BIN
repositories/centos/supervisor-3.0.el6.x86_64.rpm
Normal file
BIN
repositories/centos/supervisor-3.0.el6.x86_64.rpm
Normal file
Binary file not shown.
0
repositories/ubuntu/.gitkeep
Normal file
0
repositories/ubuntu/.gitkeep
Normal file
BIN
repositories/ubuntu/calamari-clients_1.2.2-32-g931ee58_all.deb
Normal file
BIN
repositories/ubuntu/calamari-clients_1.2.2-32-g931ee58_all.deb
Normal file
Binary file not shown.
BIN
repositories/ubuntu/calamari-server_1.0.0-1_amd64.deb
Normal file
BIN
repositories/ubuntu/calamari-server_1.0.0-1_amd64.deb
Normal file
Binary file not shown.
BIN
repositories/ubuntu/diamond_3.1.0_all.deb
Normal file
BIN
repositories/ubuntu/diamond_3.1.0_all.deb
Normal file
Binary file not shown.
BIN
repositories/ubuntu/python-msgpack-python_1.0_all.deb
Normal file
BIN
repositories/ubuntu/python-msgpack-python_1.0_all.deb
Normal file
Binary file not shown.
246
specs/calamari.rst
Normal file
246
specs/calamari.rst
Normal file
@ -0,0 +1,246 @@
|
||||
.. -*- coding: utf-8 -*-
|
||||
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
===================
|
||||
Calamari: a Ceph UI
|
||||
===================
|
||||
|
||||
Include the URL of your launchpad blueprint:
|
||||
|
||||
https://blueprints.launchpad.net/fuel/+spec/fuel-plugin-calamari
|
||||
|
||||
We would like to develop a plugin to install Calamari in the next release of
|
||||
Fuel (7.0). Calamari is a management and monitoring service for Ceph.
|
||||
Calamari is composed by monitoring agents, a server-side and a client-side
|
||||
components.
|
||||
|
||||
In more depth Calamari consists of three major components:
|
||||
|
||||
- Data collection agents running on each Ceph Storage Cluster host.
|
||||
- The REST API running on one host (also called calamari server).
|
||||
- The Calamari web application running on one host (also called calamari
|
||||
client).
|
||||
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
In this section we describe the main steps that a user should perform for
|
||||
installing Calamari. We suppose that:
|
||||
|
||||
- Ceph OSD is selected by User.
|
||||
- Calamari agent will be installed on the Ceph OSD nodes.
|
||||
- Calamari server and Calamari web application (GUI) will be installed on a
|
||||
new base-os node.
|
||||
|
||||
|
||||
Calamari installation
|
||||
---------------------
|
||||
|
||||
- Actor: User
|
||||
- Pre-Conditions: the User has already created a new environment and he has
|
||||
configured a Ceph cluster.
|
||||
- Post-Conditions: Calamari is correctly working.
|
||||
|
||||
Flow:
|
||||
|
||||
- The User assigns base-os role to an unallocated node.
|
||||
- The User renames this node as Calamari
|
||||
- The User configures in Settings tab the Ceph section.
|
||||
- The User configures in Settings tab the Calamari section.
|
||||
- The User deploys the environment.
|
||||
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
We would like develop a new Fuel plugin in order to install Calamari [1]_.
|
||||
Our proposal considers the following aspects:
|
||||
|
||||
- Install Calamari server (REST API) and client (web application) on a new node
|
||||
with the base-os role.
|
||||
|
||||
- The plugin installs also the required agents on each Ceph OSD node. The
|
||||
collected information will be pushed to Calamari server.
|
||||
|
||||
- The communication among agents and server will use the OpenStack management
|
||||
network.
|
||||
|
||||
- There will be a configuration switch to make the REST API and web application
|
||||
of Calamari available on the public interface (if the base-os support this
|
||||
already).
|
||||
|
||||
- No load balance for HA in the first implementation. This topic will be
|
||||
explored in the future.
|
||||
|
||||
|
||||
Planned improvements
|
||||
--------------------
|
||||
|
||||
- Possibility to install Calamari on a controller node.
|
||||
|
||||
- Configure Calamari to use Keystone as the authentication backend.
|
||||
|
||||
- User session sharing between Calamari and the OpenStack dashboard.
|
||||
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
None. The aim is to provide monitoring and management for Ceph. There are
|
||||
more general monitoring solution like Zabbix [2]_, LMA collector [3]_ and
|
||||
Elasticsearch-Kibana [4]_ plugins.
|
||||
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Upgrade impact
|
||||
--------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
The default admin user name and password for the web interface will be
|
||||
configured in the setting tab of the Fuel UI.
|
||||
|
||||
In the Fuel UI will be possible to allow the deploy of the REST API and web
|
||||
application on the public network.
|
||||
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
There will be a deployment successful message displaying the text pointing to
|
||||
the URL of the web application.
|
||||
|
||||
We can also add some info to the `Post Deployment Dashboard
|
||||
<https://review.openstack.org/#/c/180181/>`_ once it is implemented.
|
||||
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
In the source tree of calamari there are Vagrantfile and scripts to build the
|
||||
packages for Ubuntu 14.04, Centos and RHEL.
|
||||
|
||||
There is a `guide on building packages
|
||||
<http://calamari.readthedocs.org/en/latest/development/building_packages.html>`_.
|
||||
|
||||
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Infrastructure impact
|
||||
---------------------
|
||||
|
||||
The agent impact on Ceph servers and on the network should be negligible.
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
Alessandro Martellone <amartellone@create-net.org>
|
||||
|
||||
Other contributors:
|
||||
Daniele Pizzolli <dpizzolli@create-net.org>
|
||||
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
Task name: Calamari installation recipe
|
||||
Task description: write a puppet module in order to install Calamari server
|
||||
and configure properly all nodes to monitor.
|
||||
|
||||
Assignees: Alessandro Martellone, Daniele Pizzolli.
|
||||
|
||||
Task name: include the latest version of Calamari package
|
||||
Task description: include in the plugin repositories the required packages.
|
||||
|
||||
Assignees: Dmytro Iurchenko, Alessandro Martellone,
|
||||
Daniele Pizzolli.
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
- Fuel 6.1 or higher.
|
||||
- Base-os node role.
|
||||
|
||||
Nice to have, but not essential:
|
||||
|
||||
- `Post Deployment Dashboard <https://review.openstack.org/#/c/180181/>`_
|
||||
- `Role as a plugin <https://review.openstack.org/#/c/143690/>`_
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
Acceptance criteria:
|
||||
|
||||
- Diamond [5]_ and salt-minion services are installed and running on
|
||||
all OSD and Controller nodes.
|
||||
- Salt-master is installed and running on the node named 'calamari' and
|
||||
salt-keys command lists all OSD and Controller node hosts in
|
||||
'Accepted Keys' section.
|
||||
- Calamari REST API is available on the node named 'calamari' [6]_.
|
||||
- User can authenticate via REST API [7]_.
|
||||
- The cluster description provided by Calamari REST API [8]_ is correct.
|
||||
- Calamari UI is available on 'calamari' node on HTTP default port.
|
||||
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
None. It will be a Fuel plugin with its own documentation.
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
.. [1] http://calamari.readthedocs.org/en/latest/operations/server_install.html
|
||||
.. [2] https://docs.mirantis.com/fuel-dev/develop/addition_examples.html
|
||||
.. [3] https://github.com/stackforge/fuel-plugin-lma-collector
|
||||
.. [4] https://github.com/stackforge/fuel-plugin-elasticsearch-kibana
|
||||
.. [5] https://github.com/ceph/Diamond
|
||||
.. [6] http://ceph.com/calamari/docs/calamari_rest/index.html
|
||||
.. [7] http://ceph.com/calamari/docs/calamari_rest/authentication.html
|
||||
.. [8] http://ceph.com/calamari/docs/calamari_rest/resources/resources.html#clusterviewset
|
54
tasks.yaml
Normal file
54
tasks.yaml
Normal file
@ -0,0 +1,54 @@
|
||||
- role: ['controller', 'primary-controller', 'ceph-osd']
|
||||
stage: post_deployment/6000
|
||||
type: puppet
|
||||
parameters:
|
||||
puppet_manifest: puppet/manifests/calamari-salt.pp
|
||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||
timeout: 600
|
||||
|
||||
- role: ['controller', 'primary-controller', 'ceph-osd']
|
||||
stage: post_deployment/6001
|
||||
type: puppet
|
||||
parameters:
|
||||
puppet_manifest: puppet/manifests/calamari-agent.pp
|
||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||
timeout: 600
|
||||
|
||||
- role: ['base-os']
|
||||
stage: post_deployment/6002
|
||||
type: shell
|
||||
parameters:
|
||||
cmd: if hiera user_node_name | egrep '^calamari$'; then puppet apply /etc/puppet/modules/osnailyfacter/modular/netconfig/netconfig.pp; fi
|
||||
timeout: 720
|
||||
|
||||
- role: ['base-os']
|
||||
stage: post_deployment/6003
|
||||
type: puppet
|
||||
parameters:
|
||||
puppet_manifest: puppet/manifests/calamari-salt.pp
|
||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||
timeout: 720
|
||||
|
||||
- role: ['base-os']
|
||||
stage: post_deployment/6004
|
||||
type: puppet
|
||||
parameters:
|
||||
puppet_manifest: puppet/manifests/calamari-server.pp
|
||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||
timeout: 720
|
||||
|
||||
- role: ['controller', 'primary-controller', 'ceph-osd']
|
||||
stage: post_deployment/6005
|
||||
type: puppet
|
||||
parameters:
|
||||
puppet_manifest: puppet/manifests/restart-salt.pp
|
||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||
timeout: 720
|
||||
|
||||
- role: ['base-os']
|
||||
stage: post_deployment/6006
|
||||
type: puppet
|
||||
parameters:
|
||||
puppet_manifest: puppet/manifests/complete-centos.pp
|
||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||
timeout: 720
|
570
test/settings_default_redhat.yaml
Normal file
570
test/settings_default_redhat.yaml
Normal file
@ -0,0 +1,570 @@
|
||||
editable:
|
||||
access:
|
||||
email:
|
||||
description: Email address for Administrator
|
||||
label: Email
|
||||
regex:
|
||||
error: Invalid email
|
||||
source: ^\S+@\S+$
|
||||
type: text
|
||||
value: admin@localhost
|
||||
weight: 40
|
||||
metadata:
|
||||
label: Access
|
||||
weight: 10
|
||||
password:
|
||||
description: Password for Administrator
|
||||
label: Password
|
||||
regex:
|
||||
error: Empty password
|
||||
source: \S
|
||||
type: password
|
||||
value: admin
|
||||
weight: 20
|
||||
tenant:
|
||||
description: Tenant (project) name for Administrator
|
||||
label: Tenant
|
||||
regex:
|
||||
error: Invalid tenant name
|
||||
source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$)(?!.*
|
||||
+.*$).+
|
||||
type: text
|
||||
value: admin
|
||||
weight: 30
|
||||
user:
|
||||
description: Username for Administrator
|
||||
label: Username
|
||||
regex:
|
||||
error: Invalid username
|
||||
source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$)(?!.*
|
||||
+.*$).+
|
||||
type: text
|
||||
value: admin
|
||||
weight: 10
|
||||
additional_components:
|
||||
ceilometer:
|
||||
description: If selected, Ceilometer component will be installed
|
||||
label: Install Ceilometer
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 40
|
||||
heat:
|
||||
description: ''
|
||||
label: ''
|
||||
type: hidden
|
||||
value: true
|
||||
weight: 30
|
||||
metadata:
|
||||
label: Additional Components
|
||||
weight: 20
|
||||
mongo:
|
||||
description: If selected, You can use external Mongo DB as ceilometer backend
|
||||
label: Use external Mongo DB
|
||||
restrictions:
|
||||
- settings:additional_components.ceilometer.value == false
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 40
|
||||
murano:
|
||||
description: If selected, Murano component will be installed
|
||||
label: Install Murano
|
||||
restrictions:
|
||||
- cluster:net_provider != 'neutron'
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 20
|
||||
sahara:
|
||||
description: If selected, Sahara component will be installed
|
||||
label: Install Sahara
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 10
|
||||
common:
|
||||
auth_key:
|
||||
description: Public key(s) to include in authorized_keys on deployed nodes
|
||||
label: Public Key
|
||||
type: textarea
|
||||
value: ''
|
||||
weight: 70
|
||||
auto_assign_floating_ip:
|
||||
description: If selected, OpenStack will automatically assign a floating IP
|
||||
to a new instance
|
||||
label: Auto assign floating IP
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: cluster:net_provider == 'neutron'
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 40
|
||||
debug:
|
||||
description: Debug logging mode provides more information, but requires more
|
||||
disk space.
|
||||
label: OpenStack debug logging
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 20
|
||||
libvirt_type:
|
||||
label: Hypervisor type
|
||||
type: radio
|
||||
value: qemu
|
||||
values:
|
||||
- data: kvm
|
||||
description: Choose this type of hypervisor if you run OpenStack on hardware
|
||||
label: KVM
|
||||
- data: qemu
|
||||
description: Choose this type of hypervisor if you run OpenStack on virtual
|
||||
hosts.
|
||||
label: QEMU
|
||||
weight: 30
|
||||
metadata:
|
||||
label: Common
|
||||
weight: 30
|
||||
nova_quota:
|
||||
description: Quotas are used to limit CPU and memory usage for tenants. Enabling
|
||||
quotas will increase load on the Nova database.
|
||||
label: Nova quotas
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 25
|
||||
puppet_debug:
|
||||
description: Debug puppet logging mode provides more information, but requires
|
||||
more disk space.
|
||||
label: Puppet debug logging
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 20
|
||||
resume_guests_state_on_host_boot:
|
||||
description: Whether to resume previous guests state when the host reboots.
|
||||
If enabled, this option causes guests assigned to the host to resume their
|
||||
previous state. If the guest was running a restart will be attempted when
|
||||
nova-compute starts. If the guest was not running previously, a restart will
|
||||
not be attempted.
|
||||
label: Resume guests state on host boot
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 60
|
||||
use_cow_images:
|
||||
description: For most cases you will want qcow format. If it's disabled, raw
|
||||
image format will be used to run VMs. OpenStack with raw format currently
|
||||
does not support snapshotting.
|
||||
label: Use qcow format for images
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 50
|
||||
use_vcenter:
|
||||
type: hidden
|
||||
value: false
|
||||
weight: 30
|
||||
corosync:
|
||||
group:
|
||||
description: ''
|
||||
label: Group
|
||||
type: text
|
||||
value: 226.94.1.1
|
||||
weight: 10
|
||||
metadata:
|
||||
label: Corosync
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: 'true'
|
||||
weight: 50
|
||||
port:
|
||||
description: ''
|
||||
label: Port
|
||||
type: text
|
||||
value: '12000'
|
||||
weight: 20
|
||||
verified:
|
||||
description: Set True only if multicast is configured correctly on router.
|
||||
label: Need to pass network verification.
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 10
|
||||
external_dns:
|
||||
dns_list:
|
||||
description: List of upstream DNS servers, separated by comma
|
||||
label: DNS list
|
||||
regex:
|
||||
error: Invalid IP address list
|
||||
source: ^\*$|^(?:\d|1?\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|1?\d\d|2[0-4]\d|25[0-5])){3}(?:\s*,\s*(?:\d|1?\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|1?\d\d|2[0-4]\d|25[0-5])){3})*$
|
||||
type: text
|
||||
value: 8.8.8.8
|
||||
weight: 10
|
||||
metadata:
|
||||
label: Host OS DNS Servers
|
||||
weight: 90
|
||||
external_mongo:
|
||||
hosts_ip:
|
||||
description: IP Addresses of MongoDB. Use comma to split IPs
|
||||
label: MongoDB hosts IP
|
||||
regex:
|
||||
error: Invalid hosts ip sequence
|
||||
source: ^(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?),)*((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
|
||||
type: text
|
||||
value: ''
|
||||
weight: 30
|
||||
metadata:
|
||||
label: External MongoDB
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: settings:additional_components.mongo.value == false
|
||||
weight: 20
|
||||
mongo_db_name:
|
||||
description: Mongo database name
|
||||
label: Database name
|
||||
regex:
|
||||
error: Invalid database name
|
||||
source: ^\w+$
|
||||
type: text
|
||||
value: ceilometer
|
||||
weight: 30
|
||||
mongo_password:
|
||||
description: Mongo database password
|
||||
label: Password
|
||||
regex:
|
||||
error: Password contains spaces
|
||||
source: ^\S*$
|
||||
type: password
|
||||
value: ceilometer
|
||||
weight: 30
|
||||
mongo_replset:
|
||||
description: Name for Mongo replication set
|
||||
label: Replset
|
||||
type: text
|
||||
value: ''
|
||||
weight: 30
|
||||
mongo_user:
|
||||
description: Mongo database username
|
||||
label: Username
|
||||
regex:
|
||||
error: Empty username
|
||||
source: ^\w+$
|
||||
type: text
|
||||
value: ceilometer
|
||||
weight: 30
|
||||
external_ntp:
|
||||
metadata:
|
||||
label: Host OS NTP Servers
|
||||
weight: 100
|
||||
ntp_list:
|
||||
description: List of upstream NTP servers, separated by comma
|
||||
label: NTP server list
|
||||
regex:
|
||||
error: Invalid NTP server list
|
||||
source: ^\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+|\d{1,3}(?:\.\d{1,3}){3})\s*(?:,\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+|\d{1,3}(\.\d{1,3}){3})\s*)*$
|
||||
type: text
|
||||
value: 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org
|
||||
weight: 10
|
||||
fuel-plugin-calamari:
|
||||
fuel-plugin-calamari_email:
|
||||
description: Calamari Admin Email
|
||||
label: Admin Email
|
||||
regex:
|
||||
error: Invalid email
|
||||
source: ^\S+@\S+$
|
||||
type: text
|
||||
value: admin@localhost.invalid
|
||||
weight: 40
|
||||
fuel-plugin-calamari_password:
|
||||
description: Calamari Admin Password
|
||||
label: Admin Password
|
||||
regex:
|
||||
error: You must provide a password with at least 4 characters
|
||||
source: ^[\S]{4,}$
|
||||
type: password
|
||||
value: admin
|
||||
weight: 25
|
||||
fuel-plugin-calamari_username:
|
||||
description: Calamari Admin Username
|
||||
label: Admin Username
|
||||
regex:
|
||||
error: You must provide an username with at least 4 characters
|
||||
source: ^[\S]{4,}$
|
||||
type: text
|
||||
value: admin
|
||||
weight: 25
|
||||
metadata:
|
||||
enabled: true
|
||||
label: Calamari Installer
|
||||
plugin_id: 4
|
||||
toggleable: true
|
||||
weight: 70
|
||||
kernel_params:
|
||||
kernel:
|
||||
description: Default kernel parameters
|
||||
label: Initial parameters
|
||||
type: text
|
||||
value: console=ttyS0,9600 console=tty0 biosdevname=0 crashkernel=none rootdelay=90
|
||||
nomodeset
|
||||
weight: 45
|
||||
metadata:
|
||||
label: Kernel parameters
|
||||
weight: 40
|
||||
murano_settings:
|
||||
metadata:
|
||||
label: Murano Settings
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: settings:additional_components.murano.value == false
|
||||
weight: 20
|
||||
murano_repo_url:
|
||||
description: ''
|
||||
label: Murano Repository URL
|
||||
type: text
|
||||
value: http://storage.apps.openstack.org/
|
||||
weight: 10
|
||||
neutron_mellanox:
|
||||
metadata:
|
||||
enabled: true
|
||||
label: Mellanox Neutron components
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: not ('experimental' in version:feature_groups)
|
||||
toggleable: false
|
||||
weight: 50
|
||||
plugin:
|
||||
label: Mellanox drivers and SR-IOV plugin
|
||||
type: radio
|
||||
value: disabled
|
||||
values:
|
||||
- data: disabled
|
||||
description: If selected, Mellanox drivers, Neutron and Cinder plugin will
|
||||
not be installed.
|
||||
label: Mellanox drivers and plugins disabled
|
||||
restrictions:
|
||||
- settings:storage.iser.value == true
|
||||
- data: drivers_only
|
||||
description: If selected, Mellanox Ethernet drivers will be installed to support
|
||||
networking over Mellanox NIC. Mellanox Neutron plugin will not be installed.
|
||||
label: Install only Mellanox drivers
|
||||
restrictions:
|
||||
- settings:common.libvirt_type.value != 'kvm'
|
||||
- data: ethernet
|
||||
description: If selected, both Mellanox Ethernet drivers and Mellanox network
|
||||
acceleration (Neutron) plugin will be installed.
|
||||
label: Install Mellanox drivers and SR-IOV plugin
|
||||
restrictions:
|
||||
- settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
|
||||
== 'neutron' and networking_parameters:segmentation_type == 'vlan')
|
||||
weight: 60
|
||||
vf_num:
|
||||
description: Note that one virtual function will be reserved to the storage
|
||||
network, in case of choosing iSER.
|
||||
label: Number of virtual NICs
|
||||
restrictions:
|
||||
- settings:neutron_mellanox.plugin.value != 'ethernet'
|
||||
type: text
|
||||
value: '16'
|
||||
weight: 70
|
||||
provision:
|
||||
metadata:
|
||||
label: Provision
|
||||
weight: 80
|
||||
method:
|
||||
description: Which provision method to use for this cluster.
|
||||
label: Provision method
|
||||
type: radio
|
||||
value: image
|
||||
values:
|
||||
- data: image
|
||||
description: Copying pre-built images on a disk.
|
||||
label: Image
|
||||
- data: cobbler
|
||||
description: Install from scratch using anaconda or debian-installer.
|
||||
label: (DEPRECATED) Classic (use anaconda or debian-installer)
|
||||
public_network_assignment:
|
||||
assign_to_all_nodes:
|
||||
description: When disabled, public network will be assigned to controllers only
|
||||
label: Assign public network to all nodes
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 10
|
||||
metadata:
|
||||
label: Public network assignment
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: cluster:net_provider != 'neutron'
|
||||
weight: 50
|
||||
repo_setup:
|
||||
metadata:
|
||||
always_editable: true
|
||||
label: Repositories
|
||||
weight: 50
|
||||
repos:
|
||||
description: 'To create a local repository mirror on the Fuel master node, please
|
||||
follow the instructions provided by running "fuel-package-updates --help"
|
||||
on the Fuel master node.
|
||||
|
||||
Please make sure your Fuel master node has Internet access to the repository
|
||||
before attempting to create a mirror.
|
||||
|
||||
For more details, please refer to the documentation (https://docs.mirantis.com/openstack/fuel/fuel-6.1/reference-architecture.html#fuel-rep-mirror).
|
||||
|
||||
'
|
||||
extra_priority: null
|
||||
type: custom_repo_configuration
|
||||
value:
|
||||
- name: mos
|
||||
priority: null
|
||||
type: rpm
|
||||
uri: http://10.20.0.2:8080/2014.2.2-6.1/centos/x86_64
|
||||
- name: mos-updates
|
||||
priority: null
|
||||
type: rpm
|
||||
uri: http://mirror.fuel-infra.org/mos/centos-6/mos6.1/updates
|
||||
- name: Auxiliary
|
||||
priority: 15
|
||||
type: rpm
|
||||
uri: http://10.20.0.2:8080/2014.2.2-6.1/centos/auxiliary
|
||||
storage:
|
||||
ephemeral_ceph:
|
||||
description: Configures Nova to store ephemeral volumes in RBD. This works best
|
||||
if Ceph is enabled for volumes and images, too. Enables live migration of
|
||||
all types of Ceph backed VMs (without this option, live migration will only
|
||||
work with VMs launched from Cinder volumes).
|
||||
label: Ceph RBD for ephemeral volumes (Nova)
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 75
|
||||
images_ceph:
|
||||
description: Configures Glance to use the Ceph RBD backend to store images.
|
||||
If enabled, this option will prevent Swift from installing.
|
||||
label: Ceph RBD for images (Glance)
|
||||
restrictions:
|
||||
- settings:storage.images_vcenter.value == true: Only one Glance backend could
|
||||
be selected.
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 30
|
||||
images_vcenter:
|
||||
description: Configures Glance to use the vCenter/ESXi backend to store images.
|
||||
If enabled, this option will prevent Swift from installing.
|
||||
label: VMWare vCenter/ESXi datastore for images (Glance)
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: settings:common.use_vcenter.value != true
|
||||
- condition: settings:storage.images_ceph.value == true
|
||||
message: Only one Glance backend could be selected.
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 35
|
||||
iser:
|
||||
description: 'High performance block storage: Cinder volumes over iSER protocol
|
||||
(iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC, and
|
||||
will use a dedicated virtual function for the storage network.'
|
||||
label: iSER protocol for volumes (Cinder)
|
||||
restrictions:
|
||||
- settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
|
||||
!= 'kvm'
|
||||
- action: hide
|
||||
condition: not ('experimental' in version:feature_groups)
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 11
|
||||
metadata:
|
||||
label: Storage
|
||||
weight: 60
|
||||
objects_ceph:
|
||||
description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
|
||||
Swift API Interfaces. If enabled, this option will prevent Swift from installing.
|
||||
label: Ceph RadosGW for objects (Swift API)
|
||||
restrictions:
|
||||
- settings:storage.images_ceph.value == false
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 80
|
||||
osd_pool_size:
|
||||
description: Configures the default number of object replicas in Ceph. This
|
||||
number must be equal to or lower than the number of deployed 'Storage - Ceph
|
||||
OSD' nodes.
|
||||
label: Ceph object replication factor
|
||||
regex:
|
||||
error: Invalid number
|
||||
source: ^[1-9]\d*$
|
||||
type: text
|
||||
value: '2'
|
||||
weight: 85
|
||||
volumes_ceph:
|
||||
description: Configures Cinder to store volumes in Ceph RBD images.
|
||||
label: Ceph RBD for volumes (Cinder)
|
||||
restrictions:
|
||||
- settings:storage.volumes_lvm.value == true
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 20
|
||||
volumes_lvm:
|
||||
description: It is recommended to have at least one Storage - Cinder LVM node.
|
||||
label: Cinder LVM over iSCSI for volumes
|
||||
restrictions:
|
||||
- settings:storage.volumes_ceph.value == true
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 10
|
||||
syslog:
|
||||
metadata:
|
||||
label: Syslog
|
||||
weight: 50
|
||||
syslog_port:
|
||||
description: Remote syslog port
|
||||
label: Port
|
||||
regex:
|
||||
error: Invalid Syslog port
|
||||
source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
|
||||
type: text
|
||||
value: '514'
|
||||
weight: 20
|
||||
syslog_server:
|
||||
description: Remote syslog hostname
|
||||
label: Hostname
|
||||
type: text
|
||||
value: ''
|
||||
weight: 10
|
||||
syslog_transport:
|
||||
label: Syslog transport protocol
|
||||
type: radio
|
||||
value: tcp
|
||||
values:
|
||||
- data: udp
|
||||
description: ''
|
||||
label: UDP
|
||||
- data: tcp
|
||||
description: ''
|
||||
label: TCP
|
||||
weight: 30
|
||||
use_fedora_lt:
|
||||
kernel:
|
||||
label: Select kernel
|
||||
type: radio
|
||||
value: default_kernel
|
||||
values:
|
||||
- data: default_kernel
|
||||
description: Install default 2.6.32 kernel.
|
||||
label: CentOS default kernel
|
||||
- data: fedora_lt_kernel
|
||||
description: 'EXPERIMENTAL: Install the Fedora 3.10 longterm kernel instead
|
||||
of the default 2.6.32 kernel. This kernel may not work with all hardware
|
||||
platforms, use with caution.'
|
||||
label: Fedora LT kernel
|
||||
weight: 55
|
||||
metadata:
|
||||
label: Use Fedora longterm kernel
|
||||
weight: 50
|
||||
workloads_collector:
|
||||
enabled:
|
||||
type: hidden
|
||||
value: true
|
||||
metadata:
|
||||
label: Workloads Collector User
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: 'true'
|
||||
weight: 10
|
||||
password:
|
||||
type: password
|
||||
value: nTpksPyC
|
||||
tenant:
|
||||
type: text
|
||||
value: services
|
||||
user:
|
||||
type: text
|
||||
value: fuel_stats_user
|
591
test/settings_default_ubuntu.yaml
Normal file
591
test/settings_default_ubuntu.yaml
Normal file
@ -0,0 +1,591 @@
|
||||
editable:
|
||||
access:
|
||||
email:
|
||||
description: Email address for Administrator
|
||||
label: Email
|
||||
regex:
|
||||
error: Invalid email
|
||||
source: ^\S+@\S+$
|
||||
type: text
|
||||
value: admin@localhost
|
||||
weight: 40
|
||||
metadata:
|
||||
label: Access
|
||||
weight: 10
|
||||
password:
|
||||
description: Password for Administrator
|
||||
label: Password
|
||||
regex:
|
||||
error: Empty password
|
||||
source: \S
|
||||
type: password
|
||||
value: admin
|
||||
weight: 20
|
||||
tenant:
|
||||
description: Tenant (project) name for Administrator
|
||||
label: Tenant
|
||||
regex:
|
||||
error: Invalid tenant name
|
||||
source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$)(?!.*
|
||||
+.*$).+
|
||||
type: text
|
||||
value: admin
|
||||
weight: 30
|
||||
user:
|
||||
description: Username for Administrator
|
||||
label: Username
|
||||
regex:
|
||||
error: Invalid username
|
||||
source: ^(?!services$)(?!nova$)(?!glance$)(?!keystone$)(?!neutron$)(?!cinder$)(?!swift$)(?!ceph$)(?![Gg]uest$)(?!.*
|
||||
+.*$).+
|
||||
type: text
|
||||
value: admin
|
||||
weight: 10
|
||||
additional_components:
|
||||
ceilometer:
|
||||
description: If selected, Ceilometer component will be installed
|
||||
label: Install Ceilometer
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 40
|
||||
heat:
|
||||
description: ''
|
||||
label: ''
|
||||
type: hidden
|
||||
value: true
|
||||
weight: 30
|
||||
metadata:
|
||||
label: Additional Components
|
||||
weight: 20
|
||||
mongo:
|
||||
description: If selected, You can use external Mongo DB as ceilometer backend
|
||||
label: Use external Mongo DB
|
||||
restrictions:
|
||||
- settings:additional_components.ceilometer.value == false
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 40
|
||||
murano:
|
||||
description: If selected, Murano component will be installed
|
||||
label: Install Murano
|
||||
restrictions:
|
||||
- cluster:net_provider != 'neutron'
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 20
|
||||
sahara:
|
||||
description: If selected, Sahara component will be installed
|
||||
label: Install Sahara
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 10
|
||||
common:
|
||||
auth_key:
|
||||
description: Public key(s) to include in authorized_keys on deployed nodes
|
||||
label: Public Key
|
||||
type: textarea
|
||||
value: ''
|
||||
weight: 70
|
||||
auto_assign_floating_ip:
|
||||
description: If selected, OpenStack will automatically assign a floating IP
|
||||
to a new instance
|
||||
label: Auto assign floating IP
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: cluster:net_provider == 'neutron'
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 40
|
||||
debug:
|
||||
description: Debug logging mode provides more information, but requires more
|
||||
disk space.
|
||||
label: OpenStack debug logging
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 20
|
||||
libvirt_type:
|
||||
label: Hypervisor type
|
||||
type: radio
|
||||
value: qemu
|
||||
values:
|
||||
- data: kvm
|
||||
description: Choose this type of hypervisor if you run OpenStack on hardware
|
||||
label: KVM
|
||||
- data: qemu
|
||||
description: Choose this type of hypervisor if you run OpenStack on virtual
|
||||
hosts.
|
||||
label: QEMU
|
||||
weight: 30
|
||||
metadata:
|
||||
label: Common
|
||||
weight: 30
|
||||
nova_quota:
|
||||
description: Quotas are used to limit CPU and memory usage for tenants. Enabling
|
||||
quotas will increase load on the Nova database.
|
||||
label: Nova quotas
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 25
|
||||
puppet_debug:
|
||||
description: Debug puppet logging mode provides more information, but requires
|
||||
more disk space.
|
||||
label: Puppet debug logging
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 20
|
||||
resume_guests_state_on_host_boot:
|
||||
description: Whether to resume previous guests state when the host reboots.
|
||||
If enabled, this option causes guests assigned to the host to resume their
|
||||
previous state. If the guest was running a restart will be attempted when
|
||||
nova-compute starts. If the guest was not running previously, a restart will
|
||||
not be attempted.
|
||||
label: Resume guests state on host boot
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 60
|
||||
use_cow_images:
|
||||
description: For most cases you will want qcow format. If it's disabled, raw
|
||||
image format will be used to run VMs. OpenStack with raw format currently
|
||||
does not support snapshotting.
|
||||
label: Use qcow format for images
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 50
|
||||
use_vcenter:
|
||||
type: hidden
|
||||
value: false
|
||||
weight: 30
|
||||
corosync:
|
||||
group:
|
||||
description: ''
|
||||
label: Group
|
||||
type: text
|
||||
value: 226.94.1.1
|
||||
weight: 10
|
||||
metadata:
|
||||
label: Corosync
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: 'true'
|
||||
weight: 50
|
||||
port:
|
||||
description: ''
|
||||
label: Port
|
||||
type: text
|
||||
value: '12000'
|
||||
weight: 20
|
||||
verified:
|
||||
description: Set True only if multicast is configured correctly on router.
|
||||
label: Need to pass network verification.
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 10
|
||||
external_dns:
|
||||
dns_list:
|
||||
description: List of upstream DNS servers, separated by comma
|
||||
label: DNS list
|
||||
regex:
|
||||
error: Invalid IP address list
|
||||
source: ^\*$|^(?:\d|1?\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|1?\d\d|2[0-4]\d|25[0-5])){3}(?:\s*,\s*(?:\d|1?\d\d|2[0-4]\d|25[0-5])(?:\.(?:\d|1?\d\d|2[0-4]\d|25[0-5])){3})*$
|
||||
type: text
|
||||
value: 8.8.8.8
|
||||
weight: 10
|
||||
metadata:
|
||||
label: Host OS DNS Servers
|
||||
weight: 90
|
||||
external_mongo:
|
||||
hosts_ip:
|
||||
description: IP Addresses of MongoDB. Use comma to split IPs
|
||||
label: MongoDB hosts IP
|
||||
regex:
|
||||
error: Invalid hosts ip sequence
|
||||
source: ^(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?),)*((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
|
||||
type: text
|
||||
value: ''
|
||||
weight: 30
|
||||
metadata:
|
||||
label: External MongoDB
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: settings:additional_components.mongo.value == false
|
||||
weight: 20
|
||||
mongo_db_name:
|
||||
description: Mongo database name
|
||||
label: Database name
|
||||
regex:
|
||||
error: Invalid database name
|
||||
source: ^\w+$
|
||||
type: text
|
||||
value: ceilometer
|
||||
weight: 30
|
||||
mongo_password:
|
||||
description: Mongo database password
|
||||
label: Password
|
||||
regex:
|
||||
error: Password contains spaces
|
||||
source: ^\S*$
|
||||
type: password
|
||||
value: ceilometer
|
||||
weight: 30
|
||||
mongo_replset:
|
||||
description: Name for Mongo replication set
|
||||
label: Replset
|
||||
type: text
|
||||
value: ''
|
||||
weight: 30
|
||||
mongo_user:
|
||||
description: Mongo database username
|
||||
label: Username
|
||||
regex:
|
||||
error: Empty username
|
||||
source: ^\w+$
|
||||
type: text
|
||||
value: ceilometer
|
||||
weight: 30
|
||||
external_ntp:
|
||||
metadata:
|
||||
label: Host OS NTP Servers
|
||||
weight: 100
|
||||
ntp_list:
|
||||
description: List of upstream NTP servers, separated by comma
|
||||
label: NTP server list
|
||||
regex:
|
||||
error: Invalid NTP server list
|
||||
source: ^\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+|\d{1,3}(?:\.\d{1,3}){3})\s*(?:,\s*(?:(?:\w+(?:-+\w+)*\.)+[a-z]+|\d{1,3}(\.\d{1,3}){3})\s*)*$
|
||||
type: text
|
||||
value: 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org
|
||||
weight: 10
|
||||
fuel-plugin-calamari:
|
||||
fuel-plugin-calamari_email:
|
||||
description: Calamari Admin Email
|
||||
label: Admin Email
|
||||
regex:
|
||||
error: Invalid email
|
||||
source: ^\S+@\S+$
|
||||
type: text
|
||||
value: admin@localhost.invalid
|
||||
weight: 40
|
||||
fuel-plugin-calamari_password:
|
||||
description: Calamari Admin Password
|
||||
label: Admin Password
|
||||
regex:
|
||||
error: You must provide a password with at least 4 characters
|
||||
source: ^[\S]{4,}$
|
||||
type: password
|
||||
value: admin
|
||||
weight: 25
|
||||
fuel-plugin-calamari_username:
|
||||
description: Calamari Admin Username
|
||||
label: Admin Username
|
||||
regex:
|
||||
error: You must provide an username with at least 4 characters
|
||||
source: ^[\S]{4,}$
|
||||
type: text
|
||||
value: admin
|
||||
weight: 25
|
||||
metadata:
|
||||
enabled: true
|
||||
label: Calamari Installer
|
||||
plugin_id: 4
|
||||
toggleable: true
|
||||
weight: 70
|
||||
kernel_params:
|
||||
kernel:
|
||||
description: Default kernel parameters
|
||||
label: Initial parameters
|
||||
type: text
|
||||
value: console=ttyS0,9600 console=tty0 net.ifnames=0 biosdevname=0 rootdelay=90
|
||||
nomodeset
|
||||
weight: 45
|
||||
metadata:
|
||||
label: Kernel parameters
|
||||
weight: 40
|
||||
murano_settings:
|
||||
metadata:
|
||||
label: Murano Settings
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: settings:additional_components.murano.value == false
|
||||
weight: 20
|
||||
murano_repo_url:
|
||||
description: ''
|
||||
label: Murano Repository URL
|
||||
type: text
|
||||
value: http://storage.apps.openstack.org/
|
||||
weight: 10
|
||||
neutron_mellanox:
|
||||
metadata:
|
||||
enabled: true
|
||||
label: Mellanox Neutron components
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: not ('experimental' in version:feature_groups)
|
||||
toggleable: false
|
||||
weight: 50
|
||||
plugin:
|
||||
label: Mellanox drivers and SR-IOV plugin
|
||||
type: radio
|
||||
value: disabled
|
||||
values:
|
||||
- data: disabled
|
||||
description: If selected, Mellanox drivers, Neutron and Cinder plugin will
|
||||
not be installed.
|
||||
label: Mellanox drivers and plugins disabled
|
||||
restrictions:
|
||||
- settings:storage.iser.value == true
|
||||
- data: drivers_only
|
||||
description: If selected, Mellanox Ethernet drivers will be installed to support
|
||||
networking over Mellanox NIC. Mellanox Neutron plugin will not be installed.
|
||||
label: Install only Mellanox drivers
|
||||
restrictions:
|
||||
- settings:common.libvirt_type.value != 'kvm'
|
||||
- data: ethernet
|
||||
description: If selected, both Mellanox Ethernet drivers and Mellanox network
|
||||
acceleration (Neutron) plugin will be installed.
|
||||
label: Install Mellanox drivers and SR-IOV plugin
|
||||
restrictions:
|
||||
- settings:common.libvirt_type.value != 'kvm' or not (cluster:net_provider
|
||||
== 'neutron' and networking_parameters:segmentation_type == 'vlan')
|
||||
weight: 60
|
||||
vf_num:
|
||||
description: Note that one virtual function will be reserved to the storage
|
||||
network, in case of choosing iSER.
|
||||
label: Number of virtual NICs
|
||||
restrictions:
|
||||
- settings:neutron_mellanox.plugin.value != 'ethernet'
|
||||
type: text
|
||||
value: '16'
|
||||
weight: 70
|
||||
provision:
|
||||
metadata:
|
||||
label: Provision
|
||||
weight: 80
|
||||
method:
|
||||
description: Which provision method to use for this cluster.
|
||||
label: Provision method
|
||||
type: radio
|
||||
value: image
|
||||
values:
|
||||
- data: image
|
||||
description: Copying pre-built images on a disk.
|
||||
label: Image
|
||||
- data: cobbler
|
||||
description: Install from scratch using anaconda or debian-installer.
|
||||
label: (DEPRECATED) Classic (use anaconda or debian-installer)
|
||||
public_network_assignment:
|
||||
assign_to_all_nodes:
|
||||
description: When disabled, public network will be assigned to controllers only
|
||||
label: Assign public network to all nodes
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 10
|
||||
metadata:
|
||||
label: Public network assignment
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: cluster:net_provider != 'neutron'
|
||||
weight: 50
|
||||
repo_setup:
|
||||
metadata:
|
||||
always_editable: true
|
||||
label: Repositories
|
||||
weight: 50
|
||||
repos:
|
||||
description: 'Please note: the first repository will be considered the operating
|
||||
system mirror that will be used during node provisioning.
|
||||
|
||||
To create a local repository mirror on the Fuel master node, please follow
|
||||
the instructions provided by running "fuel-createmirror --help" on the Fuel
|
||||
master node.
|
||||
|
||||
Please make sure your Fuel master node has Internet access to the repository
|
||||
before attempting to create a mirror.
|
||||
|
||||
For more details, please refer to the documentation (https://docs.mirantis.com/openstack/fuel/fuel-6.1/operations.html#external-ubuntu-ops).
|
||||
|
||||
'
|
||||
extra_priority: null
|
||||
type: custom_repo_configuration
|
||||
value:
|
||||
- name: ubuntu
|
||||
priority: null
|
||||
section: main universe multiverse
|
||||
suite: trusty
|
||||
type: deb
|
||||
uri: http://archive.ubuntu.com/ubuntu/
|
||||
- name: ubuntu-updates
|
||||
priority: null
|
||||
section: main universe multiverse
|
||||
suite: trusty-updates
|
||||
type: deb
|
||||
uri: http://archive.ubuntu.com/ubuntu/
|
||||
- name: ubuntu-security
|
||||
priority: null
|
||||
section: main universe multiverse
|
||||
suite: trusty-security
|
||||
type: deb
|
||||
uri: http://archive.ubuntu.com/ubuntu/
|
||||
- name: mos
|
||||
priority: 1050
|
||||
section: main restricted
|
||||
suite: mos6.1
|
||||
type: deb
|
||||
uri: http://10.20.0.2:8080/2014.2.2-6.1/ubuntu/x86_64
|
||||
- name: mos-updates
|
||||
priority: 1050
|
||||
section: main restricted
|
||||
suite: mos6.1-updates
|
||||
type: deb
|
||||
uri: http://mirror.fuel-infra.org/mos/ubuntu/
|
||||
- name: mos-security
|
||||
priority: 1050
|
||||
section: main restricted
|
||||
suite: mos6.1-security
|
||||
type: deb
|
||||
uri: http://mirror.fuel-infra.org/mos/ubuntu/
|
||||
- name: mos-holdback
|
||||
priority: 1100
|
||||
section: main restricted
|
||||
suite: mos6.1-holdback
|
||||
type: deb
|
||||
uri: http://mirror.fuel-infra.org/mos/ubuntu/
|
||||
- name: Auxiliary
|
||||
priority: 1150
|
||||
section: main restricted
|
||||
suite: auxiliary
|
||||
type: deb
|
||||
uri: http://10.20.0.2:8080/2014.2.2-6.1/ubuntu/auxiliary
|
||||
storage:
|
||||
ephemeral_ceph:
|
||||
description: Configures Nova to store ephemeral volumes in RBD. This works best
|
||||
if Ceph is enabled for volumes and images, too. Enables live migration of
|
||||
all types of Ceph backed VMs (without this option, live migration will only
|
||||
work with VMs launched from Cinder volumes).
|
||||
label: Ceph RBD for ephemeral volumes (Nova)
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 75
|
||||
images_ceph:
|
||||
description: Configures Glance to use the Ceph RBD backend to store images.
|
||||
If enabled, this option will prevent Swift from installing.
|
||||
label: Ceph RBD for images (Glance)
|
||||
restrictions:
|
||||
- settings:storage.images_vcenter.value == true: Only one Glance backend could
|
||||
be selected.
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 30
|
||||
images_vcenter:
|
||||
description: Configures Glance to use the vCenter/ESXi backend to store images.
|
||||
If enabled, this option will prevent Swift from installing.
|
||||
label: VMWare vCenter/ESXi datastore for images (Glance)
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: settings:common.use_vcenter.value != true
|
||||
- condition: settings:storage.images_ceph.value == true
|
||||
message: Only one Glance backend could be selected.
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 35
|
||||
iser:
|
||||
description: 'High performance block storage: Cinder volumes over iSER protocol
|
||||
(iSCSI over RDMA). This feature requires SR-IOV capabilities in the NIC, and
|
||||
will use a dedicated virtual function for the storage network.'
|
||||
label: iSER protocol for volumes (Cinder)
|
||||
restrictions:
|
||||
- settings:storage.volumes_lvm.value != true or settings:common.libvirt_type.value
|
||||
!= 'kvm'
|
||||
- action: hide
|
||||
condition: not ('experimental' in version:feature_groups)
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 11
|
||||
metadata:
|
||||
label: Storage
|
||||
weight: 60
|
||||
objects_ceph:
|
||||
description: Configures RadosGW front end for Ceph RBD. This exposes S3 and
|
||||
Swift API Interfaces. If enabled, this option will prevent Swift from installing.
|
||||
label: Ceph RadosGW for objects (Swift API)
|
||||
restrictions:
|
||||
- settings:storage.images_ceph.value == false
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 80
|
||||
osd_pool_size:
|
||||
description: Configures the default number of object replicas in Ceph. This
|
||||
number must be equal to or lower than the number of deployed 'Storage - Ceph
|
||||
OSD' nodes.
|
||||
label: Ceph object replication factor
|
||||
regex:
|
||||
error: Invalid number
|
||||
source: ^[1-9]\d*$
|
||||
type: text
|
||||
value: '2'
|
||||
weight: 85
|
||||
volumes_ceph:
|
||||
description: Configures Cinder to store volumes in Ceph RBD images.
|
||||
label: Ceph RBD for volumes (Cinder)
|
||||
restrictions:
|
||||
- settings:storage.volumes_lvm.value == true
|
||||
type: checkbox
|
||||
value: true
|
||||
weight: 20
|
||||
volumes_lvm:
|
||||
description: It is recommended to have at least one Storage - Cinder LVM node.
|
||||
label: Cinder LVM over iSCSI for volumes
|
||||
restrictions:
|
||||
- settings:storage.volumes_ceph.value == true
|
||||
type: checkbox
|
||||
value: false
|
||||
weight: 10
|
||||
syslog:
|
||||
metadata:
|
||||
label: Syslog
|
||||
weight: 50
|
||||
syslog_port:
|
||||
description: Remote syslog port
|
||||
label: Port
|
||||
regex:
|
||||
error: Invalid Syslog port
|
||||
source: ^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$
|
||||
type: text
|
||||
value: '514'
|
||||
weight: 20
|
||||
syslog_server:
|
||||
description: Remote syslog hostname
|
||||
label: Hostname
|
||||
type: text
|
||||
value: ''
|
||||
weight: 10
|
||||
syslog_transport:
|
||||
label: Syslog transport protocol
|
||||
type: radio
|
||||
value: tcp
|
||||
values:
|
||||
- data: udp
|
||||
description: ''
|
||||
label: UDP
|
||||
- data: tcp
|
||||
description: ''
|
||||
label: TCP
|
||||
weight: 30
|
||||
workloads_collector:
|
||||
enabled:
|
||||
type: hidden
|
||||
value: true
|
||||
metadata:
|
||||
label: Workloads Collector User
|
||||
restrictions:
|
||||
- action: hide
|
||||
condition: 'true'
|
||||
weight: 10
|
||||
password:
|
||||
type: password
|
||||
value: tuFojcL6
|
||||
tenant:
|
||||
type: text
|
||||
value: services
|
||||
user:
|
||||
type: text
|
||||
value: fuel_stats_user
|
81
test/simple-install
Executable file
81
test/simple-install
Executable file
@ -0,0 +1,81 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -x
|
||||
set -u
|
||||
|
||||
# This is a simple script to automate the deploy of the plugin used
|
||||
# for testing until we have a full CI
|
||||
|
||||
# Run it on the master node after copying the plugin into this
|
||||
# directory
|
||||
|
||||
# This is a work in progress
|
||||
|
||||
MASTER_IP="10.20.0.2"
|
||||
MASTER_ADDR="http://10.20.0.2:8000"
|
||||
MASTER_USER="admin"
|
||||
MASTER_PASS="admin"
|
||||
MASTER_SSH_USER="root"
|
||||
MASTER_SSH_PASS="r00tme"
|
||||
# 1 means redhat (usually)!
|
||||
# 2 means ubuntu (usually)!
|
||||
RELEASE_ID="2"
|
||||
# keep in sync with release id!
|
||||
RELEASE_NAME="ubuntu"
|
||||
|
||||
# scp fuel-plugin-calamari-*.noarch.rpm ${MASTER_IP}:
|
||||
# ssh ${MASTER_SSH_USER}@${MASTER_IP}:
|
||||
|
||||
fuel plugins --install fuel-plugin-calamari-*.noarch.rpm
|
||||
|
||||
# Create a new env
|
||||
# rel 2 means ubuntu (usually)!
|
||||
fuel env create --name test1 --rel ${RELEASE_ID} --mode ha --net neutron --nst gre
|
||||
|
||||
# Get the new (the last) env id
|
||||
FUEL_ENV=`fuel env | sed -ne '3,$p' | cut -d '|' -f 1 | sort -rn | head -n1 | tr -d ' '`
|
||||
|
||||
# Get the first node (we assume all nodes are for ours and unallocated)
|
||||
FIRST_NODE=`fuel node | sed -ne '3,$p' | cut -d '|' -f 1 | sort -n | head -n1 | tr -d ' '`
|
||||
|
||||
# Get the CALAMARI_PLUGIN_ID, for settings workaround
|
||||
CALAMARI_PLUGIN_ID=`fuel plugins | sed -ne '3,$p' | grep fuel-plugin-calamari | cut -d '|' -f 1 | sort -n | head -n1 | tr -d ' '`
|
||||
|
||||
# Upload network settings
|
||||
if [ -e 'network_default.yaml' ]
|
||||
then
|
||||
cp network_default.yaml network_${FUEL_ENV}.yaml
|
||||
fuel --env $FUEL_ENV network upload
|
||||
rm network_${FUEL_ENV}.yaml
|
||||
fi
|
||||
|
||||
# Copy the default settings for the env with proper plugin id assuming
|
||||
# that calamari is the only plugin enabled here!
|
||||
sed -e "s/plugin_id:.*/plugin_id: $CALAMARI_PLUGIN_ID/" < settings_default_${RELEASE_NAME}.yaml > settings_${FUEL_ENV}.yaml
|
||||
|
||||
# Upload the settings
|
||||
fuel --env $FUEL_ENV settings upload
|
||||
|
||||
# Remove the temp file for the env
|
||||
rm settings_${FUEL_ENV}.yaml
|
||||
|
||||
# Add the nodes
|
||||
fuel node set --env $FUEL_ENV --node $FIRST_NODE --role controller
|
||||
fuel node set --env $FUEL_ENV --node $(($FIRST_NODE + 1)) --role compute,ceph-osd
|
||||
fuel node set --env $FUEL_ENV --node $(($FIRST_NODE + 2)) --role compute,ceph-osd
|
||||
fuel node set --env $FUEL_ENV --node $(($FIRST_NODE + 3)) --role base-os
|
||||
|
||||
# Workaround for setting the base-os name to calamari (there is no api yet)
|
||||
AUTH=`curl -s -H "Content-Type: application/json" -X POST -d '{"auth":{"passwordCredentials":{"username":"admin","password":"admin"},"tenantName":"admin"}}' ${MASTER_ADDR}/keystone/v2.0/tokens | python -c 'import sys, json; j=json.load(sys.stdin); print j["access"]["token"]["id"]'`
|
||||
|
||||
curl -s -H "X-Auth-Token: $AUTH" -X PUT -d '{"name":"calamari"}' ${MASTER_ADDR}/api/nodes/$(($FIRST_NODE + 3))
|
||||
|
||||
# Node provisioning
|
||||
fuel --env $FUEL_ENV node --provision --node $FIRST_NODE,$(($FIRST_NODE + 1)),$(($FIRST_NODE + 2)),$(($FIRST_NODE + 3))
|
||||
|
||||
# Wait for provisioning to complete
|
||||
sleep 5;
|
||||
while fuel node | grep -q provisioning; do date ; sleep 10; done
|
||||
|
||||
# Node deploy
|
||||
fuel --env $FUEL_ENV node --deploy --node $FIRST_NODE,$(($FIRST_NODE + 1)),$(($FIRST_NODE + 2)),$(($FIRST_NODE + 3))
|
30
wip/python-msgpack-python
Normal file
30
wip/python-msgpack-python
Normal file
@ -0,0 +1,30 @@
|
||||
### Build me with the command
|
||||
### equivs-build python-msgpack-python
|
||||
### Commented entries have reasonable defaults.
|
||||
### Uncomment to edit them.
|
||||
# Source: <source package name; defaults to package name>
|
||||
Section: misc
|
||||
Priority: optional
|
||||
# Homepage: <enter URL here; no default>
|
||||
Standards-Version: 3.9.2
|
||||
|
||||
Package: python-msgpack-python
|
||||
# Version: <enter version here; defaults to 1.0>
|
||||
# Maintainer: Your Name <yourname@example.com>
|
||||
# Pre-Depends: <comma-separated list of packages>
|
||||
# Depends: <comma-separated list of packages>
|
||||
# Recommends: <comma-separated list of packages>
|
||||
# Suggests: <comma-separated list of packages>
|
||||
# Provides: <comma-separated list of packages>
|
||||
# Replaces: <comma-separated list of packages>
|
||||
# Architecture: all
|
||||
# Copyright: <copyright file; defaults to GPL2>
|
||||
# Changelog: <changelog file; defaults to a generic changelog>
|
||||
# Readme: <README.Debian file; defaults to a generic one>
|
||||
# Extra-Files: <comma-separated list of additional files for the doc directory>
|
||||
# Files: <pair of space-separated paths; First is file to include, second is destination>
|
||||
# <more pairs, if there's more than one file to include. Notice the starting space>
|
||||
Description: Fake package to satisfy calamari-server_1.0.0-1 dependecies
|
||||
No long description
|
||||
.
|
||||
No second par
|
Loading…
Reference in New Issue
Block a user