Browse Source

Merge "Add multi linux distro support in Airship"

Zuul 4 months ago
parent
commit
f8da65c96b
1 changed files with 269 additions and 0 deletions
  1. 269
    0
      specs/approved/multi-linux-distros.rst

+ 269
- 0
specs/approved/multi-linux-distros.rst View File

@@ -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
+
15
+Add index directives to help others find your spec. E.g.::
16
+
17
+  .. index::
18
+     single: template
19
+     single: creating specs
20
+
21
+===========================================
22
+Airship Multiple Linux Distribution Support
23
+===========================================
24
+
25
+Various Airship services were developed originally around Ubuntu. This spec
26
+will add the ability in Airship to plug in Linux Distro's, refactor the
27
+existing Ubuntu support as the default Linux distro plugin, and add openSUSE
28
+and other Linux distro's as new plugins.
29
+
30
+Links
31
+=====
32
+
33
+The work to author and implement this spec is tracked in Storyboard:
34
+https://storyboard.openstack.org/#!/story/2003699
35
+
36
+Problem description
37
+===================
38
+
39
+Airship 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
+
47
+Airship is missing a large user base if only supports Ubuntu.
48
+
49
+Impacted components
50
+===================
51
+
52
+Most 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
+
69
+Proposed change
70
+===============
71
+
72
+Pegleg
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
+
81
+Deckhand
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
+
101
+Shipyard
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
+
123
+Armada
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
+
142
+Promenade
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
+
175
+Treasuremap
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
+
203
+Security impact
204
+---------------
205
+
206
+Do not expect any material change in security controls and/or policies.
207
+
208
+SUSE plans to adopt the Airship AppArmor profile in the Treasuremap project.
209
+
210
+Performance impact
211
+------------------
212
+
213
+Do not expect performance impact.
214
+
215
+Alternatives
216
+------------
217
+
218
+None. Extending Linux distro support is critical for Airship to expand its user
219
+base and for its developer community to grow.
220
+
221
+Implementation
222
+==============
223
+
224
+We propose three milestones to develop the feature in an iterative approach.
225
+
226
+Milestone 1: Multi Linux distro support in the bring your own K8s and Ceph use
227
+case. The work in this milestone is to bring Armada, Shipyard, Deckhand and
228
+Pegleg to Linux distro agnostic, and support Ubuntu and openSUSE as the two
229
+available options, and CentOS if there are developers familiar with CentOS
230
+join the effort.
231
+
232
+Milestone 2: Add the ability in bootstrapping to plug in the KubeAdm and Ceph
233
+release/packages built for the underlying Linux distros on the existing
234
+Physical hosts. The work is focused on Promenade component.
235
+
236
+Milestone 3: Add the ability in Drydock to provision baremetal on Linux distros
237
+in addition to Ubuntu.
238
+
239
+Assignee(s):
240
+
241
+SUSE is committed to implement this spec, add the openSUSE plugins and gate
242
+tests, and welcomes the community to join the effort.
243
+
244
+Dependencies
245
+============
246
+
247
+OpenStack Helm
248
+--------------
249
+
250
+1. Add the openSUSE base OS option in the OSH tool images, including
251
+   cepf-config-helper, libvirt, OpenVSwitch, tempest, vbmc.
252
+2. Add the ability to specify OS choice in loci.sh and support Ubuntu,
253
+   openSUSE, CentOS etc.
254
+
255
+LOCI
256
+----
257
+
258
+1. Add openSUSE base OS option in all OpenStack service images in LOCI.
259
+
260
+Airship
261
+-------
262
+
263
+1. Bring your own K8s and Ceph storage. Link TBD
264
+2. Add Ironic driver in Drydock. Link TBD
265
+
266
+References
267
+==========
268
+
269
+Any external references (other than the direct links above)

Loading…
Cancel
Save