support for mixed container types

Registered by bjolo

Problem Description

As it is today, kolla gives the operator the choice for one type of container and needs to specify
 - kolla_base_distro: base linux distro to use for container
 - Kolla_install_type: Either binary or source, where source can be tarball or git.
 - Openstack_release: docker tag of image

This is a very convenient and good starting point, but the current container selection is not sufficient for large scale operators for various reasons.
Examples:
 - Operators might want to run binary containers as much as possible, but some openstack services are not packaged for selected linux distribution
 - Compute group is not homogeneous and operator needs to deploy different images based on compute node group.

The standard code structure today for selecting what container to deploy looks something like this.
e.g. ansible/roles/nova/defaults/main.yml
nova_compute_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-nova-compute"
nova_compute_tag: "{{ openstack_release }}"
nova_compute_image_full: "{{ nova_compute_image }}:{{ nova_compute_tag }}"

The savvy operator can override these values, but not without some inconvenient restrictions. It can only be done on the openstack_release or on the full container name. For a large number of hosts, this will result in many lines in globals.yml

Proposed Solution

Provide a more convenient structure and options for operators to mix and match containers. Below are some ideas, but this needs more discussion.
 - Support for node groups. See https://blueprints.launchpad.net/kolla/+spec/inventory-group-as-config-target
 - Set primary and secondary containers. i.e. use centos binary 3.0.1.0 if available, else use centos source 3.0.1.123

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
bjolo
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Implemented
Milestone target:
None
Started by
Mark Goddard
Completed by
Mark Goddard

Related branches

Sprints

Whiteboard

This has at least partially been implemented by adding per-service install type variables, e.g. nova_install_type.

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.