Minimal RHEL 7 support in MOS as a compute node

https://blueprints.launchpad.net/fuel/+spec/rhel-compute-nodes

Problem description

  • As a Cloud owner I want to introduce pre-provisioned RHEL hosts into my MOS cloud as Compute nodes so that I could run my RHEL-certified workloads on it

Proposed changes

A Minimal Viable Product is to provide detailed documentation for enabling minimal RHEL 7 support in MOS as a compute node to work under Ubuntu-based control plane. This documentation should consist of the following parts:

  • How to validate that RHEL node is ready to be used as a compute node (validate network interfaces, disks).
  • How to add MOS repositories to this node.
  • How to install a minimal required set of packages on top of the pre-provisioned RHEL 7 node to have a possibility to run puppet granular tasks from Fuel Library.
  • How to prepare configuration in astute.yaml for Fuel Library tasks.
  • Desription of the procedure (with automated/scripted steps where it’s possible) to deploy MOS packages on a pre-provisioned RHEL node and configure Compute services using granular puppet tasks from Fuel Library.

RHEL 7 Compute nodes will not be integrated with Fuel (no web UI, nailgun and etc changes are required).

The feature is targeted at the Fuel 8.0 release, so each environment which was deployed by Fuel 8.0 version supports adding of RHEL 7 compute node to it.

Upon successfully delivering MVP for this feature in 8.0, we can continue with this feature in 9.0 - full track of RHEL packages, automate deployment and support RHEL computes at scale. Also other roles can be supported.

Web UI

None

Nailgun

None

Data model

None

REST API

None

Orchestration

RPC Protocol

None

Fuel Client

None

Plugins

None

Fuel Library

Fuel Library may need to be updated to work on RHEL (Fuel common tasks, l23network, neutron-l2-agent and nova-compute related manifests). This changes will be RHEL-specific (will not affect Ubuntu deployments).

Alternatives

Implement full support of RHEL compute nodes managed by Fuel:

  • Adapt Fuel-related package and source code (mcollective, nailgun-agent and etc) for RHEL.
  • Implement provisioning of RHEL nodes.
  • Support RHEL subscription (allow user to provide RHEL license).
  • Integrate RHEL nodes with Fuel Architecture.
  • Allow Fuel to deploy environments with multiple operating systems.

Upgrade impact

If an existing cluster was upgraded to MOS 8.0, then it’s possible to add RHEL computes to it.

Security impact

None

Notifications impact

None

End user impact

None

Performance impact

None

Deployment impact

None

Developer impact

None

Infrastructure impact

This feature requires separate hardware server where we will run new SWARM & BVT tests. We also need to prepare a qcow2 image for compute nodes and upload this image to all hardware servers where we will execute new SWARM tests.

We need to configure CI jobs per commit for all changes in RPM packages and add new tests to SWARM test suite to execute them on daily basis.

Documentation impact

All implementation steps should be fully documented and contain examples of commands and templates for configuration files.

Implementation

The following workflow should be considered:

  • User creates base MOS cloud (Fuel Master + Controllers) using standard Fuel flow (UI or CLI). The target environment configuration to be considered is:

    • Ubuntu on Controllers
    • Neutron+OVS (VXLAN, VLAN) on networking layer
    • Ceph storage for Nova, Glance, Cinder (managed by Fuel, host OS is Ubuntu)
  • User validates base requirements for Compute node (disks, network interfaces)

  • User validates connection to MOS repositories and configures them on RHEL node

  • User installs base packages for Fuel Library granular tasks and adds all required puppet modules on RHEL node

  • User prepares astute.yaml for puppet tasks based on template which is provided in documentation

  • User connects pre-provisioned (provisioned and configured without Fuel) RHEL node to MOS Management network using Fuel Library netconfig task

  • User configures installed MOS packages to have services up and running managed by puppet granular tasks from Fuel Library

  • User validates RHEL compute functionality performing next steps:

    1. On controller node check that:
    1. RHEL node is in up state in nova hypervisor list
    2. RHEL node’s compute service is in up state in nova services list
    3. RHEL node’s OVS agent is in alive state in neutron agents list
    1. Test of instance launch on RHEL node
    2. Test of network connectivity of instance launched on RHEL node
    3. Validate functionality after RHEL node reboot by repeating steps 1-3

Assignee(s)

Primary assignee:
Ivan Berezovskiy
Other contributors:
Sergey Kolekonov Mykyta Karpin
Mandatory design review:
Sergii Golovatiuk Vladimir Kuklin Evgeny Konstantinov
QA engineer:
Timur Nurlygayanov

Work Items

  • Documentation with instructions which describes how to deploy RHEL compute

Dependencies

Testing, QA

  • Manual testing of RHEL 7 nodes in a certain lab environment
  • Automate testing on CI using RHEL 7 based computes. Some new tests will be added to existing SWARM test suite by MOS QA team.
  • Perfomance testing on real hardware with RHEL 7

Acceptance criteria

  • Cloud Deployment engineer can validate whether RHEL node is ready to be introduced into MOS cloud as a compute node:
    • Network interfaces are sufficient and can be configured to operate with Neutron+OVS (VXLAN).
    • Disk size and partitioning is sufficient/feasible to enable basic MOS services on Compute node.
    • Packages are successfully installed without any conflicts with official RHEL packages
  • Cloud Deployment engineer can deploy MOS packages on existing RHEL node and standup+configure MOS services to operate under control of Ubuntu-based control plane
  • Cloud Deployment engineer can validate that newly introduced RHEL node is operational and can be introduced into an operating MOS cloud
  • There is the way to test all changes to OpenStack components (for Nova and Neutron projects in 8.0-liberty branch) and their dependencies under RHEL as well as Ubuntu (automatically or manually)