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 feature is tested with integration tests involving virtual machines to show 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
- sudo apt-get install ruby-dev libxml2-dev libxslt-dev # nokogiri dependencies
- 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
- git clone https://github.com/bodepd/scenario_node_terminus.git ../scenario_node_terminus
- 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='dumpling emperor firefly' \
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