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
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.
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.
A blueprint contains an inventory of what is desirable. It was decided to start from scratch and implement one module at a time.
- 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 run benchmarks on three new machines
git clone https://github.com/openstack/puppet-ceph.git cd puppet-ceph sudo gem install bundler bundle install
The developer documentation of the puppet-openstack project is the reference:
Beaker Integration Tests
bundle install bundle exec rspec spec/acceptance
The BEAKER_set environment variable contains the resource set of linux distribution configurations for which integration tests are going to be run. Available values are
The default is
BEAKER_set=two-ubuntu-server-1404-x64 \ bundle exec rspec spec/acceptance
Deprecated 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 install
- bundle exec rake lint
- bundle exec rake spec
- git clone https://github.com/bodepd/scenario_node_terminus.git ../scenario_node_terminus
- bundle exec rake spec:system
- RS_SET=two-ubuntu-server-1204-x64 bundle exec rake spec:system
- RS_SET=two-centos-66-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
RELEASES='firefly hammer' \ 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
The default is
RS_SET=two-ubuntu-server-1204-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:
cat > ./ci.sh << EOF #!/bin/bash bundle install export BEAKER_debug=yes export BEAKER_destroy=yes echo ---------------- CENTOS 7 -------------- BEAKER_set=two-centos-70-x64 bundle exec rspec spec/acceptance rc=$? echo ---------- UBUNTU 14.04 -------------- BEAKER_set=two-ubuntu-server-1404-x64 bundle exec rspec spec/acceptance exit $(( $? | $rc)) EOF chmod +x ./ci.sh GEM_HOME=~/.gems screen -dmS puppet-ceph gerritexec \ --timeout 14400 --hostname review.openstack.org \ --verbose --username puppetceph --script "../ci.sh > /tmp/out$$ 2>&1 ; r=$? ; pastebinit /tmp/out$$ ; exit $r #" \ --project openstack/puppet-ceph