Ceph Puppet Module
Go to file
David Gurtner 4ea286a15b Initial classes/tests for a roles/profiles pattern
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
2014-05-30 18:02:01 +02:00
examples Initial classes/tests for a roles/profiles pattern 2014-05-30 18:02:01 +02:00
lib/puppet Add ceph_config ini helper 2013-10-25 10:22:01 -07:00
manifests Initial classes/tests for a roles/profiles pattern 2014-05-30 18:02:01 +02:00
spec Initial classes/tests for a roles/profiles pattern 2014-05-30 18:02:01 +02:00
.fixtures.yml Add ceph_config ini helper 2013-10-25 10:22:01 -07:00
.gitignore integration tests environment 2013-10-27 13:44:11 +01:00
.gitreview Initial Commit. 2013-10-18 21:29:43 -04:00
.nodeset.yml Support single node CS tests on CentOS 6.4 2014-05-30 18:02:01 +02:00
Gemfile remove rspec-system dependencies from Gemfile 2014-03-11 08:54:54 +01:00
Gemfile-rspec-system remove rspec-system dependencies from Gemfile 2014-03-11 08:54:54 +01:00
LICENSE Add project files 2013-10-20 22:45:54 -07:00
Modulefile add missing dependencies in Modulefile and Puppetfile 2014-04-24 20:25:05 +02:00
Puppetfile add missing dependencies in Modulefile and Puppetfile 2014-04-24 20:25:05 +02:00
Rakefile Introduction of ceph installation and configuration management 2013-11-15 17:08:59 -05:00
README.md Support single node CS tests on CentOS 6.4 2014-05-30 18:02:01 +02:00
USECASES.md update the first use case to reflect that it works 2014-05-07 22:53:52 +00:00

ceph

Table of Contents

  1. Overview - What is the ceph module?
  2. Module Description - What does the module do?
  3. Setup - The basics of getting started with ceph
  4. Implementation - An under-the-hood peek at what the module is doing
  5. Limitations - OS compatibility, etc.
  6. Development - Guide for contributing to the module
  7. Contributors - Those with commits
  8. Integration - Apply the module and test restults
  9. 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

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:

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

Contributors

Release Notes