Puppet OpenStack Integration

“How to test all modules together”

Emilien Macchi

Sr. Software Engineer @Redhat

Three Problems

  • Puppet modules are tested individually, but don’t test interoperability.
  • Tests are too simple and not enough to validate OpenStack actually works.
  • A feature that needs patches in multiple modules can’t be tested.

Solution for problem #1

Puppet modules are tested individually, but don’t test interoperability.

puppet-openstack-integration is a repository that contains scenarios (Puppet manifests) and CI scripts (mostly tools).

Solution for problem #1 (...)

  • puppet-openstack-integration contains functional jobs that will run Puppet scenarios deploying a full OpenStack Cloud, using our modules
  • First implementation with single-node focusing on compute starter-kit (keystone, nova, glance, neutron)

Solution for problem #2

Tests are too simple and not enough to validate OpenStack actually works.

Tempest has been chosen to validate the new OpenStack Cloud is actually working.

Solution for problem #2 (...)

  • Tempest is configured by Puppet (tempest.conf + Tempest resources, like images, flavors, etc).
  • Tempest is run by CI scripts, and executes smoke tests (~113 tests, including API + scenarios) that are considered enough for our use-case.

Solution for problem #3

A feature that needs patches in multiple modules can’t be tested.

Puppet OpenStack Integration jobs will run beside beaker jobs.

Solution for problem #3 (...)

  • Currently, jobs run for puppet-{keystone,openstacklib} as non-voting
  • Target is puppet-{glance,nova,neutron}
  • Make it vote once stable enough
  • Thanks to zuul-cloner, a feature that impact multiple modules will be able to be tested

Pipeline

Questions

Thank you!

Emilien Macchi

@EmilienMacchi

Puppet OpenStack Integration - Google Slides