4ea286a15b
This is a first step to providing roles/profiles manifests according to the roles/profiles pattern. The roles/profiles pattern is a way to combine ceph manifests into functional units: Profiles combine multiple manifest to provide a single service. For example a ceph monitor server needs the repository, packages, configuration and finally the monitor service. Roles define sets of profiles to configure a specific server. For example an allinone role would install the monitor as well as an osd profile. The learn more have a look at: http://www.slideshare.net/PuppetLabs/roles-talk To start with the basic configuration this provides: * params: extracts the configuration from hiera * base: installs ceph and configures ceph.conf All configuration happens via hiera. Example hiera files are provided. NB: this uses hiera autoloading and will only work with Puppet >=3.0 Change-Id: Iba9aca7f124bd3a719dc18292b18fc0f4f386d5c |
||
---|---|---|
examples | ||
lib/puppet | ||
manifests | ||
spec | ||
.fixtures.yml | ||
.gitignore | ||
.gitreview | ||
.nodeset.yml | ||
Gemfile | ||
Gemfile-rspec-system | ||
LICENSE | ||
Modulefile | ||
Puppetfile | ||
Rakefile | ||
README.md | ||
USECASES.md |
ceph
Table of Contents
- Overview - What is the ceph module?
- Module Description - What does the module do?
- Setup - The basics of getting started with ceph
- Implementation - An under-the-hood peek at what the module is doing
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
- Contributors - Those with commits
- Integration - Apply the module and test restults
- Release Notes - Notes on the most recent updates to the module
Overview
The ceph module is intended to leverage all Ceph has to offer and allow for a wide range of use case. Although hosted on the OpenStack infrastructure, it does not require to sign a CLA nor is it restricted to OpenStack users. It benefits from a structured development process that helps federate the development effort. Each component is unit tested and an integration test shows that it performs as expected when used with a realistic scenario.
Module Description
The ceph module deploys a Ceph cluster ( MON, OSD ), the Cephfs file system and the RadosGW object store. It provides integration with various environments ( OpenStack ... ) and components to be used by third party puppet modules that depend on a Ceph cluster.
Setup
Implementation
A blueprint contains an inventory of what is desirable. It was decided to start from scratch and implement one module at a time.
Limitations
Use Cases
- I want to try this module, heard of ceph, want to see it in action
- I want to operate a production cluster
- [I want to spawn a cluster configured with a puppetmaster as part of a continuous integration effort] (USECASES.md#i-want-to-spawn-a-cluster-configured-with-a-puppetmaster-as-part-of-a-continuous-integration-effort)
- I want to run benchmarks on three new machines
Development
git clone https://github.com/stackforge/puppet-ceph.git
cd puppet-ceph
sudo gem install bundler
bundle install
The developer documentation of the puppet-openstack project is the reference:
Mailing lists:
- (puppet-openstack)[https://groups.google.com/a/puppetlabs.com/forum/#!forum/puppet-openstack]
- (ceph-devel)[http://ceph.com/resources/mailing-list-irc/]
IRC channels:
- irc.freenode.net#puppet-openstack
- irc.oftc.net#ceph-devel
Integration Tests
Relies on rspec-system-puppet and tests are in spec/system. It runs virtual machines and requires 4GB of free memory and 10GB of free disk space.
- Install Vagrant and Virtualbox
-
nokogiri dependencies
sudo apt-get install ruby-dev libxml2-dev libxslt-dev - mv Gemfile-rspec-system Gemfile # because of https://bugs.launchpad.net/openstack-ci/+bug/1290710
- BUNDLE_PATH=/tmp/vendor bundle install
- BUNDLE_PATH=/tmp/vendor bundle exec rake lint
- BUNDLE_PATH=/tmp/vendor bundle exec rake spec
- BUNDLE_PATH=/tmp/vendor bundle exec rake spec:system
- BUNDLE_PATH=/tmp/vendor RS_SET=two-ubuntu-server-12042-x64 bundle exec rake spec:system
- BUNDLE_PATH=/tmp/vendor RS_SET=two-centos-64-x64 bundle exec rake spec:system
The RELEASES environment variable contains the list of ceph releases for which integration tests are going to be run. The default is
- BUNDLE_PATH=/tmp/vendor
RELEASES='cuttlefish dumpling emperor'
bundle exec rake spec:system
The RS_SET environment variable contains the resource set of linux distribution configurations for which integration tests are going to be run. Available values are
- two-ubuntu-server-12042-x64
- one-ubuntu-server-12042-x64
- two-centos-64-x64
- one-centos-64-x64
The default is
- BUNDLE_PATH=/tmp/vendor
RS_SET=two-ubuntu-server-12042-x64
bundle exec rake spec:system
The MACHINES environment variable contains the list of virtual machines that are used for integration tests. This needs to match with the RS_SET above. I.e. for a two-* RS_SET use 2 machines. The default is
- MACHINES='first second'
bundle exec rake spec:system
On success it should complete with
...
=end=============================================================
Finished in 4 minutes 1.7 seconds
1 example, 0 failures
Example invocation of gerritexec:
script='bash -c "'
script+='mv Gemfile-rspec-system Gemfile ; bundle install ;'
script+='RS_SET=two-ubuntu-server-12042-x64 bundle exec rake spec:system'
script+='RS_SET=two-centos-64-x64 bundle exec rake spec:system'
script+='" > /tmp/out 2>&1 ; r=$? ; '
script+='echo https://pypi.python.org/pypi/gerritexec output: ; '
script+='pastebinit /tmp/out ; '
script+='exit $r #'
GEM_HOME=~/.gems gerritexec
--hostname review.openstack.org
--verbose --username puppetceph
--script "$script"
--project stackforge/puppet-ceph