Anatomy of an openstack distribution


January 2017

$ whoami





Javier Peña <>

@fj_pena (Twitter), jpena (Freenode)

Senior Software Engineer @ RDO Team





  1. Why do you need an OpenStack distribution

  2. What is RDO?

  3. Creating RDO: packaging

  4. Creating RDO: CI

  5. Contributing to RDO

Some context


  • The OpenStack Newton release included
    • 32 service projects
    • 75 library projects
    • 16 Horizon plug-ins
    • 65 "other" projects
  • 354 libraries  used by the projects
  • More than 200 repositories are active each month (*)




  • Getting everything integrated with your base OS
  • Interactions between different pieces
  • OpenStack vs non-OpenStack components
  • Getting the right versions of everything
    • and getting updates!

Image from, licensed with CC BY 2.0

What is RDO?

  • "RDO is a community of people using and deploying OpenStack on CentOS, Fedora, and Red Hat Enterprise Linux." (*)
  • RDO is an OpenStack distribution for RPM-based operating systems
  • Based on vanilla OpenStack code, no "secret sauce" added
  • Integrated and tested on CentOS and Red Hat Enterprise Linux


What makes RDO

  • A set of repositories with RPM packages
    • Tested to integrate with each other
    • Tested to integrate with CentOS / Red Hat Enterprise Linux
  • Installers
    • TripleO
    • Packstack
  • A community of people who develop, deploy and use the distribution

Packaging IN RDO


+ list files and some other metadata


  • New dependencies coming often
  • New files created by projects
  • New projects
  • This grows fast!
    • 140 packages in RDO Mitaka
    • 235 packages in RDO Newton


Continuous packaging


  • Allow tools that use packages to evolve during the cycle rather than waiting till  the end
  • Reduce the delta between versions, allowing faster time to market when a release is complete

High level packaging flow

Patch (in OpenStack Gerrit)

RDO Trunk package

RDO Trunk repo

RDO GA repo

Unit tests

Integration tests

(in gate)

Unit tests

(when packaging)

Integration tests

(with installers)

Promotion pipeline


Integration tests

Additional testing coverage

RDO repositories

  • Stable
    • For general consumption
    • Signed packages
  • Testing
    • Future stable packages
    • Non-signed packages
  • Trunk
    • Latest commit from master branch in repo
    • Non-signed packages
    • Bleeding edge!

Continuous packaging


  • Fetch the latest upstream commit from Git repos
  • Build an RPM package from that code
  • Create a YUM repo with the latest versions of each package
    • This repo will be used for CI jobs
  • If a package build fails
    • Automatically open a review to fix the spec file

Fixing packages asap

The promotion pipeline

Why test?

Well, it worked on DevStack ¯\_(ツ)_/¯

Deployment projects tested

  • TripleO
    • Minimal and Pacemaker
  • Packstack
  • Puppet-OpenStack-Integration
  • Kolla (future)

Deployment projects tested

  • TripleO
    • Minimal and Pacemaker
  • Packstack
  • Puppet-OpenStack-Integration
  • Kolla (future)

Once all jobs pass, a repo gets the "CI passed" seal of approval

The result of all this

Next step, 1 hour!

Can I contribute to RDO?


Ways to contribute

  • RDO Test days:
  • RDO Documentation:
  • RDO Packaging repos:
  • RDO Gerrit:

Adding a new package

  1. Open review at
  2. Add project to rdoinfo
  3. Review spec file
  4. Enable package builds
  5. Package built and tested in RDO Trunk
  6. Package available on the next RDO GA

Detailed process at

QA for package reviews



Visit us:
Chat with us:
Follow us:
#rdo on freenode