There is a lack of testing for our infrastructure code, in the chef part. While we have openstack tests that indicate that the chef cookbooks did their work (kind of) there is multitude of small details that can get away and not come up in the openstack tests that refer to infrastructure and changing cookbooks can lead to disasters without proper testing.
Introducing kitchen into the equation with a mix of docker to test how if cookbooks work and deploy exactly as we expect them to. It will make it easier to make changes to some more complex cookbook and test them in a real deployment, without having to wait for mkcloud to do a full run. It also means that its easier and faster to test them locally as we dont need to wait for a full run of 3-5 nodes to start,install,configure but we have a ready docker image that is used as deployment node.
Software to use
- Kitchen CI: http://kitchen.ci/
- Kitchen-dokken: https://github.com/someara/kitchen-dokken
- Oldchef (docker images with old chef versions): https://github.com/Itxaka/oldchef
Problems and blockers
- We dont have a Suse 12.3 docker image, nor they are available publicily, nor there is a private docker registry
- Our chef client/server build is too old, so there is no longer support for it from Opscode. We would need to maintain our chef docker images ourselves.
- crowbar admin node is non-existant in this case, so we will need to mimic/stub/mock its existance or prepare an image with crowbar installed already
- Some things in our chef cookbooks may not be ready for a docker environment
- Testing multi node cookbooks may be near impossible, as kitchen does not support launching more than one node
This project is one of its kind!