Build Fuel RPM packages for CentOS 7

https://blueprints.launchpad.net/fuel/+spec/build-fuel-rpm-packages-for-centos7

Problem description

We have to waste our resources each time we need to backport security or bug fixes from upstream (especially Linux kernel). Building fuel packages (see table) for CentOS 7 is one of the steps towards using the latest stable release of the operating system running on the master node (currently, CentOS 7).

Table 1. The list of openstack repositories and related fuel packages

Repo-name RPM packages for CentOS 7
fuel-agent
  • fuel-agent
fuel-astute
  • rubygem-astute
  • nailgun-mcagents
fuel-mirror
  • fuel-createmirror
fuel-library
  • fuel-dockerctl
  • fuel-ha-utils
  • fuel-library8.0
  • fuel-migrate
  • fuel-misc
  • fuel-notify
  • fuel-rabbit-fence
fuel-main
  • fuel
fuel-nailgun-agent
  • nailgun-agent
fuel-octane
  • fuel-octane
fuel-ostf
  • fuel-ostf
fuel-web
  • fencing-agent
  • fuel-package-updates
  • fuel-provisioning-scripts
  • fuelmenu
  • fuel-nailgun
  • nailgun-net-check
  • shotgun
python-fuelclient
  • python-fuelclient

Proposed changes

  1. Create additional workflow (on packaging-ci) for building fuel [1] rpm packages for CentOS 7
  2. Update fuel packages SPECs (if needed) to support both (CentOS 6 and 7)
  3. Put packages on mirrors in all location with base path defined below:
OS Dist. URI path on mirrors
CentOS 6 mos-repos/centos/mos8.0-centos6-fuel
CentOS 7 mos-repos/centos/mos8.0-centos7-fuel

Web UI

None

Nailgun

None

Data model

None

REST API

None

Orchestration

None

RPC Protocol

None

Fuel Client

None

Plugins

None

Fuel Library

None

Alternatives

None

Upgrade impact

None

Security impact

None

Notifications impact

None

End user impact

Fuel packages naming schema must correspond to those that is described in specification separate-mos-from-centos

Performance impact

None

Deployment impact

Fuel packages naming schema must correspond to those that is described in specification separate-mos-from-centos

Developer impact

There is no impact on developing process, since packages for both CentOS 6 and CentOS 7 will be built and appear on mirrors on the same gerrit events

Infrastructure impact

  • Expected jobs workload (building/publishing) will be double increased, because of triggering two sets of jobs (for CentOS 6 and 7) in parallel
  • No additional branches required, all packages will be built from the master branch
  • No additional HW resources required, since build process of fuel packages lasts no longer then max 2 minutes and the size of a package < ~10Mb
  • Additional CI jobs should be created to build fuel packages for CentOS 7
  • Since we have limitation one Zuul one Gerrit, we need additional Zuul instance, which will listen to openstack gerrit (see pic. 1)
  • Since we have limitation one Zuul one Jenkins, we need to share Gearman instance between two Zuuls (see pic. 1)
+---------------------+                 +---------------------+
|                     |                 |                     |
|       +-------------+-------+         |       +-------------+-------+
|       |   build OpenStack   |         |       |                     |
+-------+   packages + deps   |         +-------+  build fuel packages|
        |         jobs        |                 |        jobs         |
        +---------^-----------+                 +----------^----------+
                  |                                        |
                  +-------------------+--------------------+
                                      |
                               +------+-------+
                               |              |
                               |   jenkins    |
                               | packaging-ci |
                               |              |
                               +------^-------+
                                      |
                      +---------------+
                      |
        +---------------------------+      +---------------------------+
        |Zuul01 +-----v-----+       |      |Zuul02                     |
        |       |           |       |      |                           |
        |       |  Gearman  <-----------+  |                           |
        |       |           |       |   |  |                           |
        |       +-----------+       |   |  |                           |
        |       +-----------+       |   |  |       +-----------+       |
        |       |           |       |   |  |       |           |       |
        |       |  Gerrit   |       |   +----------+  Gerrit   |       |
        |       |    +      |       |      |       |     +     |       |
        |       +-----------+       |      |       +-----------+       |
        +---------------------------+      +---------------------------+
                     |                                   |
                     |                                   |
                     |                                   |
                     v                                   v
            review.fuel-infra.org              review.openstack.org

                          Picture 1 - Zuul schema

Related mirrors should be created/rsynced to all location with the base path defined below:

OS Dist. URI path on mirrors
CentOS 6 mos-repos/centos/mos8.0-centos6-fuel
CentOS 7 mos-repos/centos/mos8.0-centos7-fuel

Fuel packages naming schema must correspond to those that is described in spec separate-mos-from-centos.

Documentation impact

All infrastructure changes should be documented

Implementation

Assignee(s)

Primary assignee:
Sergey Kulanov
CI-team:
Alexander Evseev
Mandatory Design Reviewers:

Work Items

  • Implement related changes to zuul-layouts configuration [2]
  • Implement related changes to jenkins-job-builder [3]

Testing, QA

Acceptance criteria

  • CI builds Fuel packages for CentOS 7, based on the existing packages specs
  • Fuel packages available on the public mirrors