summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Gu <jgu@suse.com>2018-09-09 22:46:59 -0700
committerjamesgu <jgu@suse.com>2018-10-08 23:12:34 -0700
commitdac336ae66081f294f909d6ca33f3e7a489bf9e8 (patch)
tree87d72b8049697db82c345069ce58cf0c9ee62b79
parent145307c84b5cdd10b3e63cf126cc675e6986d1ab (diff)
Add multi linux distro support in Airship
This spec adds the ability to plug in Linux distro into Airship services and add OpenSUSE support in addition to the existing Ubuntu support. Change-Id: If35809a53095ee8a395a77215e5fb9f561c56078 Story: 2003699
Notes
Notes (review): Code-Review+2: Felipe Monteiro <felipe.monteiro@att.com> Code-Review+1: Dirk Mueller <dirk@dmllr.de> Code-Review+2: Roman Gorshunov <roman.gorshunov@att.com> Workflow+1: Roman Gorshunov <roman.gorshunov@att.com> Verified+2: Zuul Submitted-by: Zuul Submitted-at: Wed, 05 Dec 2018 19:59:45 +0000 Reviewed-on: https://review.openstack.org/601187 Project: openstack/airship-specs Branch: refs/heads/master
-rw-r--r--specs/approved/multi-linux-distros.rst269
1 files changed, 269 insertions, 0 deletions
diff --git a/specs/approved/multi-linux-distros.rst b/specs/approved/multi-linux-distros.rst
new file mode 100644
index 0000000..520a1bc
--- /dev/null
+++ b/specs/approved/multi-linux-distros.rst
@@ -0,0 +1,269 @@
1..
2 This work is licensed under a Creative Commons Attribution 3.0 Unported
3 License.
4
5 http://creativecommons.org/licenses/by/3.0/legalcode
6
7.. index::
8 single: template
9 single: creating specs
10
11.. note::
12
13 Blueprints are written using ReSTructured text.
14
15Add index directives to help others find your spec. E.g.::
16
17 .. index::
18 single: template
19 single: creating specs
20
21===========================================
22Airship Multiple Linux Distribution Support
23===========================================
24
25Various Airship services were developed originally around Ubuntu. This spec
26will add the ability in Airship to plug in Linux Distro's, refactor the
27existing Ubuntu support as the default Linux distro plugin, and add openSUSE
28and other Linux distro's as new plugins.
29
30Links
31=====
32
33The work to author and implement this spec is tracked in Storyboard:
34https://storyboard.openstack.org/#!/story/2003699
35
36Problem description
37===================
38
39Airship was originally developed focusing on the Ubuntu environment:
40
41- While having a well defined driver interface, the baremetal provisioner
42 currently only supports Canonical's MAAS.
43- Promenade bootstraps only on a Ubuntu deployer.
44- Assumption of Debian packages in various services.
45- Builds and references only Ubuntu based container images.
46
47Airship is missing a large user base if only supports Ubuntu.
48
49Impacted components
50===================
51
52Most Airship components will be impacted by this spec:
53
54#. Promenade: add the ability to bootstrap on any Linux distro and add new
55 plugins for openSUSE, CentOS, etc.
56#. Pegleg: enhanced to build image on non Debian distros and add openSUSE,
57 CentOS and other Linux distros to CI gate.
58#. Deckhand: enhanced to build image on non Debian distros and add openSUSE,
59 CentOS and other Linux distros to CI gate.
60#. Armada: enhanced to build image on non Debian distro and add openSUSE,
61 CentOS and other Linux distros to CI gate.
62#. Shipyard: enhanced to build image on non Debian distro and add openSUSE,
63 CentOS and other Linux distros CI gate.
64#. Drydock: enhanced to provision bare metal on non Ubuntu Linux distros using
65 Ironic driver (expect to have a separate spec).
66#. Airship-in-a-Bottle: add the ability to deploy Airship-in-a-Bottle on
67 openSUSE, CentOS, etc.
68
69Proposed change
70===============
71
72Pegleg
73------
74
75- Add non Ubuntu Linux distros CI gate, including openSUSE, CentOS, etc.
76
77 - tools/gate/playbooks/docker-image-build.yaml: support Docker rpm install on
78 non Debian Linux.
79 - add gate test case for openSUSE, CentOS.
80
81Deckhand
82--------
83
84- Container image(s)
85
86 - images/deckhand/Dockerfile: add rpm package support for non Debian Linux
87 distros
88
89- Verify Deckhand Python source code and scripts are Linux distro agnostic
90- Update document for rpm package installation, e.g., getting started guide
91- Add Non Debian Linux support in gate playbooks
92
93 - tools/gate/playbooks/docker-image-build.yaml
94 - tools/gate/playbooks/roles/install-postgresql/tasks/install-postgresql.yaml
95 - tools/gate/playbooks/roles/run-integration-tests/tasks/integration-tests.yaml
96 - tools/gate/roles/install-postgresql/tasks/install-postgresql.yaml
97 - tools/gate/roles/run-integration-tests/tasks/integration-tests.yaml
98 - tools/run_pifpaf.sh
99 - add gate test case for openSUSE, CentOS, etc.
100
101Shipyard
102--------
103
104- Container image(s)
105
106 - images/shipyard/Dockerfile: add rpm package for openSUSE, CentOS, etc.
107 - images/airflow/Dockerfile: add rpm package for openSUSE, CentOS, etc.
108
109- Verify Shipyard Python source code and scripts are Linux distro agnostic.
110- Update documentation where references Ubuntu and MAAS as the sole option.
111
112 - README.rst
113 - docs/source/client-user-guide.rst
114 - docs/source/deployment-guide.rst
115
116- Add non Debian Linux support in gate playbooks
117
118 - tools/gate/playbooks/roles/build-images/tasks/airship-shipyard.yaml
119 - tools/gate/roles/build-images/tasks/airship-shipyard.yaml
120 - tools/gate/scripts/000-environment-setup.sh
121 - add test cases in zuul for openSUSE, CentOS, etc.
122
123Armada
124------
125
126- Container image(s)
127
128 - Dockerfile: add rpm package for non Debian Linux (Docker file location is
129 inconsistent with other projects).
130
131- Verify Python source code and scripts are Linux distro agnostic.
132
133- Update documentation where references Ubuntu and MAAS as the sole option,
134 e.g., getting-started.rst.
135
136- Add non Debian Linux support in gate playbooks
137
138 - Add rpm package support when ansible_os_family is SUSE or Red Hat
139 - tools/gate/playbooks/docker-image-build.yaml
140 - Add test cases in zuul for openSUSE, CentOS, etc.
141
142Promenade
143---------
144
145- Container image(s)
146
147 - Dockerfile: add rpm package for SUSE (Docker file location is inconsistent
148 with other projects)
149
150- Verify Python source code and scripts are Linux distro agnostic, e.g.,
151
152 - Genesis process assumes Debian-based OS. Changes are required to maintain
153 this functionality for other distros as well as logic to pick the right
154 template, e.g., promenade/templates/roles/common/etc/apt/sources.list.d.
155 - tests/unit/api/test_update_labels.py: label is hard coded to "ubuntubox".
156 which seems to be just cosmetics
157 - tests/unit/api/test_validatedesign.py: deb for Docker and socat
158
159- Update documentation where references Ubuntu and MAAS as the sole option and
160 add list of docker images for other Linux OS than Ubuntu
161
162 - getting-started.rst
163 - developer-onboarding.rst
164 - examples: HostSystem.yaml, armada-resources.yaml
165
166- Add non Debian Linux support in gate playbooks
167
168 - tools/gate/config-templates/site-config.yaml: add rpm install for Docker
169 and socat based on os family
170 - tools/setup_gate.sh: add rpm install for Docker based on os family
171 - tools/zuul/playbooks/docker-image-build.yaml
172 - tools/cleanup.sh:
173 - add test cases in zuul for openSUSE, CentOS, etc.
174
175Treasuremap
176-----------
177
178- Update documentation to add authoring and deployment instructions for
179 OpenSUSE, CentOS, etc. Differences are around deb vs rpm packaging, container
180 images, repos.
181
182 - doc/source/authoring_and_deployment.rst
183 - global/profiles/kubernetes-host.yaml
184 - global/schemas/drydock/Region/v1.yaml
185 - global/schemas/promenade/HostSystem/v1.yaml
186 - global/software/config/versions.yaml
187 - tools/gate/Jenkinsfile
188 - global/profiles/kubernetes-host.yaml
189 - site/airship-seaworthy/networks/common-addresses.yaml (points to ubuntu
190 ntp server)
191 - site/airship-seaworthy/profiles/region.yaml (comments references "ubuntu"
192 user)
193 - site/airship-seaworthy/secrets/passphrases/ubuntu_crypt_password.yaml (name
194 hardcoded with "ubuntu" reference)
195 - site/airship-seaworthy/software/charts/ucp/divingbell/divingbell.yaml (user
196 name is hardcoded "ubuntu")
197 - tools/updater.py
198
199- Add CI gate for openSUSE, CentOS, etc.
200
201 - tools/gate/Jenkinsfile
202
203Security impact
204---------------
205
206Do not expect any material change in security controls and/or policies.
207
208SUSE plans to adopt the Airship AppArmor profile in the Treasuremap project.
209
210Performance impact
211------------------
212
213Do not expect performance impact.
214
215Alternatives
216------------
217
218None. Extending Linux distro support is critical for Airship to expand its user
219base and for its developer community to grow.
220
221Implementation
222==============
223
224We propose three milestones to develop the feature in an iterative approach.
225
226Milestone 1: Multi Linux distro support in the bring your own K8s and Ceph use
227case. The work in this milestone is to bring Armada, Shipyard, Deckhand and
228Pegleg to Linux distro agnostic, and support Ubuntu and openSUSE as the two
229available options, and CentOS if there are developers familiar with CentOS
230join the effort.
231
232Milestone 2: Add the ability in bootstrapping to plug in the KubeAdm and Ceph
233release/packages built for the underlying Linux distros on the existing
234Physical hosts. The work is focused on Promenade component.
235
236Milestone 3: Add the ability in Drydock to provision baremetal on Linux distros
237in addition to Ubuntu.
238
239Assignee(s):
240
241SUSE is committed to implement this spec, add the openSUSE plugins and gate
242tests, and welcomes the community to join the effort.
243
244Dependencies
245============
246
247OpenStack Helm
248--------------
249
2501. Add the openSUSE base OS option in the OSH tool images, including
251 cepf-config-helper, libvirt, OpenVSwitch, tempest, vbmc.
2522. Add the ability to specify OS choice in loci.sh and support Ubuntu,
253 openSUSE, CentOS etc.
254
255LOCI
256----
257
2581. Add openSUSE base OS option in all OpenStack service images in LOCI.
259
260Airship
261-------
262
2631. Bring your own K8s and Ceph storage. Link TBD
2642. Add Ironic driver in Drydock. Link TBD
265
266References
267==========
268
269Any external references (other than the direct links above)