support for mixed container types
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/
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_
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:/
- 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
Related bugs
Sprints
Whiteboard
This has at least partially been implemented by adding per-service install type variables, e.g. nova_install_type.