commit
f8da65c96b
@ -0,0 +1,269 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
.. index::
|
||||
single: template
|
||||
single: creating specs
|
||||
|
||||
.. note::
|
||||
|
||||
Blueprints are written using ReSTructured text.
|
||||
|
||||
Add index directives to help others find your spec. E.g.::
|
||||
|
||||
.. index::
|
||||
single: template
|
||||
single: creating specs
|
||||
|
||||
===========================================
|
||||
Airship Multiple Linux Distribution Support
|
||||
===========================================
|
||||
|
||||
Various Airship services were developed originally around Ubuntu. This spec
|
||||
will add the ability in Airship to plug in Linux Distro's, refactor the
|
||||
existing Ubuntu support as the default Linux distro plugin, and add openSUSE
|
||||
and other Linux distro's as new plugins.
|
||||
|
||||
Links
|
||||
=====
|
||||
|
||||
The work to author and implement this spec is tracked in Storyboard:
|
||||
https://storyboard.openstack.org/#!/story/2003699
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
Airship was originally developed focusing on the Ubuntu environment:
|
||||
|
||||
- While having a well defined driver interface, the baremetal provisioner
|
||||
currently only supports Canonical's MAAS.
|
||||
- Promenade bootstraps only on a Ubuntu deployer.
|
||||
- Assumption of Debian packages in various services.
|
||||
- Builds and references only Ubuntu based container images.
|
||||
|
||||
Airship is missing a large user base if only supports Ubuntu.
|
||||
|
||||
Impacted components
|
||||
===================
|
||||
|
||||
Most Airship components will be impacted by this spec:
|
||||
|
||||
#. Promenade: add the ability to bootstrap on any Linux distro and add new
|
||||
plugins for openSUSE, CentOS, etc.
|
||||
#. Pegleg: enhanced to build image on non Debian distros and add openSUSE,
|
||||
CentOS and other Linux distros to CI gate.
|
||||
#. Deckhand: enhanced to build image on non Debian distros and add openSUSE,
|
||||
CentOS and other Linux distros to CI gate.
|
||||
#. Armada: enhanced to build image on non Debian distro and add openSUSE,
|
||||
CentOS and other Linux distros to CI gate.
|
||||
#. Shipyard: enhanced to build image on non Debian distro and add openSUSE,
|
||||
CentOS and other Linux distros CI gate.
|
||||
#. Drydock: enhanced to provision bare metal on non Ubuntu Linux distros using
|
||||
Ironic driver (expect to have a separate spec).
|
||||
#. Airship-in-a-Bottle: add the ability to deploy Airship-in-a-Bottle on
|
||||
openSUSE, CentOS, etc.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Pegleg
|
||||
------
|
||||
|
||||
- Add non Ubuntu Linux distros CI gate, including openSUSE, CentOS, etc.
|
||||
|
||||
- tools/gate/playbooks/docker-image-build.yaml: support Docker rpm install on
|
||||
non Debian Linux.
|
||||
- add gate test case for openSUSE, CentOS.
|
||||
|
||||
Deckhand
|
||||
--------
|
||||
|
||||
- Container image(s)
|
||||
|
||||
- images/deckhand/Dockerfile: add rpm package support for non Debian Linux
|
||||
distros
|
||||
|
||||
- Verify Deckhand Python source code and scripts are Linux distro agnostic
|
||||
- Update document for rpm package installation, e.g., getting started guide
|
||||
- Add Non Debian Linux support in gate playbooks
|
||||
|
||||
- tools/gate/playbooks/docker-image-build.yaml
|
||||
- tools/gate/playbooks/roles/install-postgresql/tasks/install-postgresql.yaml
|
||||
- tools/gate/playbooks/roles/run-integration-tests/tasks/integration-tests.yaml
|
||||
- tools/gate/roles/install-postgresql/tasks/install-postgresql.yaml
|
||||
- tools/gate/roles/run-integration-tests/tasks/integration-tests.yaml
|
||||
- tools/run_pifpaf.sh
|
||||
- add gate test case for openSUSE, CentOS, etc.
|
||||
|
||||
Shipyard
|
||||
--------
|
||||
|
||||
- Container image(s)
|
||||
|
||||
- images/shipyard/Dockerfile: add rpm package for openSUSE, CentOS, etc.
|
||||
- images/airflow/Dockerfile: add rpm package for openSUSE, CentOS, etc.
|
||||
|
||||
- Verify Shipyard Python source code and scripts are Linux distro agnostic.
|
||||
- Update documentation where references Ubuntu and MAAS as the sole option.
|
||||
|
||||
- README.rst
|
||||
- docs/source/client-user-guide.rst
|
||||
- docs/source/deployment-guide.rst
|
||||
|
||||
- Add non Debian Linux support in gate playbooks
|
||||
|
||||
- tools/gate/playbooks/roles/build-images/tasks/airship-shipyard.yaml
|
||||
- tools/gate/roles/build-images/tasks/airship-shipyard.yaml
|
||||
- tools/gate/scripts/000-environment-setup.sh
|
||||
- add test cases in zuul for openSUSE, CentOS, etc.
|
||||
|
||||
Armada
|
||||
------
|
||||
|
||||
- Container image(s)
|
||||
|
||||
- Dockerfile: add rpm package for non Debian Linux (Docker file location is
|
||||
inconsistent with other projects).
|
||||
|
||||
- Verify Python source code and scripts are Linux distro agnostic.
|
||||
|
||||
- Update documentation where references Ubuntu and MAAS as the sole option,
|
||||
e.g., getting-started.rst.
|
||||
|
||||
- Add non Debian Linux support in gate playbooks
|
||||
|
||||
- Add rpm package support when ansible_os_family is SUSE or Red Hat
|
||||
- tools/gate/playbooks/docker-image-build.yaml
|
||||
- Add test cases in zuul for openSUSE, CentOS, etc.
|
||||
|
||||
Promenade
|
||||
---------
|
||||
|
||||
- Container image(s)
|
||||
|
||||
- Dockerfile: add rpm package for SUSE (Docker file location is inconsistent
|
||||
with other projects)
|
||||
|
||||
- Verify Python source code and scripts are Linux distro agnostic, e.g.,
|
||||
|
||||
- Genesis process assumes Debian-based OS. Changes are required to maintain
|
||||
this functionality for other distros as well as logic to pick the right
|
||||
template, e.g., promenade/templates/roles/common/etc/apt/sources.list.d.
|
||||
- tests/unit/api/test_update_labels.py: label is hard coded to "ubuntubox".
|
||||
which seems to be just cosmetics
|
||||
- tests/unit/api/test_validatedesign.py: deb for Docker and socat
|
||||
|
||||
- Update documentation where references Ubuntu and MAAS as the sole option and
|
||||
add list of docker images for other Linux OS than Ubuntu
|
||||
|
||||
- getting-started.rst
|
||||
- developer-onboarding.rst
|
||||
- examples: HostSystem.yaml, armada-resources.yaml
|
||||
|
||||
- Add non Debian Linux support in gate playbooks
|
||||
|
||||
- tools/gate/config-templates/site-config.yaml: add rpm install for Docker
|
||||
and socat based on os family
|
||||
- tools/setup_gate.sh: add rpm install for Docker based on os family
|
||||
- tools/zuul/playbooks/docker-image-build.yaml
|
||||
- tools/cleanup.sh:
|
||||
- add test cases in zuul for openSUSE, CentOS, etc.
|
||||
|
||||
Treasuremap
|
||||
-----------
|
||||
|
||||
- Update documentation to add authoring and deployment instructions for
|
||||
OpenSUSE, CentOS, etc. Differences are around deb vs rpm packaging, container
|
||||
images, repos.
|
||||
|
||||
- doc/source/authoring_and_deployment.rst
|
||||
- global/profiles/kubernetes-host.yaml
|
||||
- global/schemas/drydock/Region/v1.yaml
|
||||
- global/schemas/promenade/HostSystem/v1.yaml
|
||||
- global/software/config/versions.yaml
|
||||
- tools/gate/Jenkinsfile
|
||||
- global/profiles/kubernetes-host.yaml
|
||||
- site/airship-seaworthy/networks/common-addresses.yaml (points to ubuntu
|
||||
ntp server)
|
||||
- site/airship-seaworthy/profiles/region.yaml (comments references "ubuntu"
|
||||
user)
|
||||
- site/airship-seaworthy/secrets/passphrases/ubuntu_crypt_password.yaml (name
|
||||
hardcoded with "ubuntu" reference)
|
||||
- site/airship-seaworthy/software/charts/ucp/divingbell/divingbell.yaml (user
|
||||
name is hardcoded "ubuntu")
|
||||
- tools/updater.py
|
||||
|
||||
- Add CI gate for openSUSE, CentOS, etc.
|
||||
|
||||
- tools/gate/Jenkinsfile
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
Do not expect any material change in security controls and/or policies.
|
||||
|
||||
SUSE plans to adopt the Airship AppArmor profile in the Treasuremap project.
|
||||
|
||||
Performance impact
|
||||
------------------
|
||||
|
||||
Do not expect performance impact.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
None. Extending Linux distro support is critical for Airship to expand its user
|
||||
base and for its developer community to grow.
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
We propose three milestones to develop the feature in an iterative approach.
|
||||
|
||||
Milestone 1: Multi Linux distro support in the bring your own K8s and Ceph use
|
||||
case. The work in this milestone is to bring Armada, Shipyard, Deckhand and
|
||||
Pegleg to Linux distro agnostic, and support Ubuntu and openSUSE as the two
|
||||
available options, and CentOS if there are developers familiar with CentOS
|
||||
join the effort.
|
||||
|
||||
Milestone 2: Add the ability in bootstrapping to plug in the KubeAdm and Ceph
|
||||
release/packages built for the underlying Linux distros on the existing
|
||||
Physical hosts. The work is focused on Promenade component.
|
||||
|
||||
Milestone 3: Add the ability in Drydock to provision baremetal on Linux distros
|
||||
in addition to Ubuntu.
|
||||
|
||||
Assignee(s):
|
||||
|
||||
SUSE is committed to implement this spec, add the openSUSE plugins and gate
|
||||
tests, and welcomes the community to join the effort.
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
OpenStack Helm
|
||||
--------------
|
||||
|
||||
1. Add the openSUSE base OS option in the OSH tool images, including
|
||||
cepf-config-helper, libvirt, OpenVSwitch, tempest, vbmc.
|
||||
2. Add the ability to specify OS choice in loci.sh and support Ubuntu,
|
||||
openSUSE, CentOS etc.
|
||||
|
||||
LOCI
|
||||
----
|
||||
|
||||
1. Add openSUSE base OS option in all OpenStack service images in LOCI.
|
||||
|
||||
Airship
|
||||
-------
|
||||
|
||||
1. Bring your own K8s and Ceph storage. Link TBD
|
||||
2. Add Ironic driver in Drydock. Link TBD
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
Any external references (other than the direct links above)
|
Loading…
Reference in new issue