Difference between revisions of "TripleOPuppetCI"
(Added new TripleO Puppet CI page)
Revision as of 14:06, 31 March 2015
TripleO Puppet CI
A description of our TripleO Puppet CI job, what it does, and how to interpret results.
The job is loosely based around our TripleO devtest scripts with some extra Puppet environment variables which are described here in detail:
If you are a developer looking to setup your own TripleO Puppet environment the above link is probably what you want.
The Environment (where the CI jobs run)
TripleO CI is built around a normal OpenStack cloud which is attached to nodepool and is used to spin up Jenkins slaves for each job. This Jenkins slave is used to build images, and launch various devtest scripts from the tripleo-incubator project, etc. Because the Jenkins slave is itself a virtual machine (and we aren't running nested virt in our OpenStack cloud) we need to have something else to provide extra fake "baremetal" virtual machines for testing. We use a separate cluster of test environment (testenv) machines for this which are essentially baremetal machines with pre-created virtual machine groups. So while the Jenkins slave is used to build images, and launch various scripts driving the CI process the actual VMs themselves are running on a separate testenv "cloud" that is hosted on a separate baremetal server. For over a year now our CI clouds have been running jobs in this fashion with a split OpenStack and testenv based configuration which supports everything we need to test TripleO in various deployments (including HA).
Eventually the goal is to be able to host our TripleO CI needs entirely on OpenStack itself. This effort is described here: http://specs.openstack.org/openstack/tripleo-specs/specs/juno/tripleo-on-openstack.html as QuintupleO. Simply put this is adding a couple extra features to various OpenStack components (Nova, and Neutron) to support booting "baremetal" instances in the OpenStack cloud itself.
How does a Puppet CI job work
The following steps describe how Puppet CI jobs flow in TripleO.
- Jenkins slave is launched
- A test environment is acquired from the Geard broker. This provides a set of fake "baremetal" VMs for testing.
- A "seed" image is built. The seed is a special kind of undercloud (to launch baremetal instances) that runs entirely in a virtual machine.
- The seed VM is launched. Ironic on the seed is configured to use the rest of the fake "baremetal" VMs in the testenv in order to spawn its instances.
- Overcloud images are built, one controller image, and one compute image. At this time we are pre-installing OpenStack packages into our images. This aligns well with the normal TripleO process and allows our CI jobs to run because testenv machines have no external network connectivity they cannot download packages at deployment time currently.
- Puppet modules get installed into image at image build time via the puppet-modules element http://git.openstack.org/cgit/openstack/tripleo-puppet-elements/tree/elements/puppet-modules