class: center, middle, inverse # OpenStack Packaging for Fedora & CentOS ## Haïkel Guémar - @hguemar --- ## whoami .right-column[
] .left-column[ + Fedoraproject.org developer (Cloud WG) + CentOS developer (Cloud SIG/OpenStack) + OpenStack ATC + RDO Engineering + Speaker (Cloud Computing, Free Software, Software Craftmanship) ] And my fellow friend Barry ! _(He's just a friendly Python from Australia)_ --- class: center, middle, inverse # Introduction --- class: middle ## What's OpenStack ? OpenStack is an open source platform that lets you build an Infrastructure as a Service (IaaS) cloud that runs on commodity hardware ![overview](img/openstack-software-diagram.png) http://openstack.org --- class: middle ## OpenStack is really ...
--- class: middle ## What's RDO RDO is a freely-available and community supported distribution of OpenStack packaged and integrated for RHEL, CentOS and Fedora.
http://rdoproject.org --- class: middle ## What's RDO * OpenStack packages * An installer: packstack * __MOST IMPORTANT: A COMMUNITY__ --- class: middle ## Packstack * Fast & simple deployment tool of OpenStack * Handle single-node/multi-nodes configuration * Built on Puppet
--- class: middle ## History - OpenStack in Fedora * openstack-nova Diablo imported to Fedora 16 in August 2011  * Until now we were able to keep Fedora/OpenStack release 1:1  + Fedora 16 includes OpenStack Diablo + Fedora 17 includes OpenStack Essex + Fedora 18 includes OpenStack Folsom + Fedora 19 includes OpenStack Grizzly + Fedora 20 includes OpenStack Havana + Fedora 21 includes OpenStack Icehouse + Fedora 22 will include OpenStack Juno : http://pkgs.fedoraproject.org/cgit/openstack-nova.git/commit/?id=430fcdb4f519438525bc3bbccc6480dcbce8bfd8 : https://fedoraproject.org/wiki/OpenStack#OpenStack --- class: middle ## History - OpenStack in RHEL/CentOS * Nova added to EPEL6 in November 2011 * complete Essex update in April 2012  * incompatible Folsom update in October 2012  sparked conversations leading to the creation of RDO  * RDO started with Grizzly in April 2013 : https://admin.fedoraproject.org/updates/FEDORA-EPEL-2012-5719 : https://admin.fedoraproject.org/updates/FEDORA-EPEL-2012-13088 : https://openstack.redhat.com/ --- class: middle, inverse, center # OpenStack Packaging Challenges --- class: middle ## Multiple Targets * RHEL/CentOS 6 & 7 * All currently supported Fedora (+ Rawhide off course) --- class: middle ## Multiple Releases * Icehouse/2014.1.3 (security-supported) => april 2014 * Juno/2013.2.1 (current stable) => octobre 2014 * Kilo (under development) --- class: middle ## Many packages For instance CentOS 7 Juno * 641 binary packages for CentOS * 282 source packages * 207 python packages * 101 source packages for openstack services * 17 source packages for openstack clients --- class: middle, inverse, center # The Setup --- class: middle ## Git * Currently hosted on Fedora dist-git * A single spec per release on one branch + master (F22) => Juno + F21 => Icehouse + F20 => Havana * Same spec is used to be built on multiple targets * Trunk aka Kilo is a special case. Specs lives there: https://github.com/openstack-packages/ --- class: middle ## Buildsystem Setup * RDO Fedora is built in Koji, Fedora N+1 builds are made available for Fedora N *e.g. RDO Icehouse for Fedora 20 are Fedora 21 builds* * RDO EL is currently built in Copr, example for Icehouse EL7  * RDO EL depends on EPEL. * Moving out to CentOS Build System (CBS) for RHEL/CentOS builds : https://copr.fedoraproject.org/coprs/jruzicka/rdo-icehouse-epel-7/ --- class: middle ## Packaging/Patches review * Using gerrit like OpenStack upstream * Patches and packaging changes runs through a review * Updates are submitted through a simple YAML file * Hosted on gerrithub: https://review.gerrithub.io/#/q/project:openstack-packages * Trigger a serie of CI jobs --- class: middle ## Continuous Integration * Phase1 Install packages from update YAML on the snapshot image with the all-in-one OpenStack installation, starts services and runs Tempest smoketest. Tests basic package sanity and upgrade. * Phase2 Runs from-the-scratch all-in-one installation with all the packages which passed Phase1. Tests package interaction among queued updates. + stage daily jobs and on-demand before pushing queued updates list + production daily job to catch regressions in dependency changes => Hosted internally to Red Hat will be moved to ci.centos.org --- class: middle ## Back to the future !
--- class: middle ## Delorean https://etherpad.openstack.org/p/delorean-packages Tracks upstream trunk i.e. currently Kilo. Breaks when upstream change requires packaging changes and alerts the package owner as defined in https://github.com/redhat-openstack/rdoinfo Going forward, all packaging changes will be done in Delorean packages first, and merged to Fedora Rawhide around milestone times. --- class: middle ## rdopkg: swiss army knife for RDO packaging * Automate most of the annoyances * Rebase/Updating patches/Submit updates etc. Available here: https://copr.fedoraproject.org/coprs/jruzicka/rdopkg/ --- class: middle, center, inverse # Contributing to RDO --- class: middle # RDO packaging documentation https://openstack.redhat.com/packaging/rdo-packaging.html --- class: middle # Communication channels * mailing-list: http://www.redhat.com/mailman/listinfo/rdo-list * IRC: #rdo @freenode --- class: middle, center, inverse # Q/A