blob: e1ca3c3284340b45c62b8a97df67505030c63b8b [file] [log] [blame]
Mohammed Naser096ade02022-12-15 09:53:33 -05001# Copyright (c) 2022 VEXXHOST, Inc.
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
Mohammed Naserfef69422023-01-18 02:38:06 +000015# NOTE(mnaser): We should get rid of this task eventually as it is suspending
16# the old HelmRelease and removing it to avoid uninstalling the
17# Helm chart.
18- name: Uninstall the legacy HelmRelease
19 run_once: true
20 block:
21 - name: Suspend the existing HelmRelease
22 kubernetes.core.k8s:
23 state: patched
24 api_version: helm.toolkit.fluxcd.io/v2beta1
25 kind: HelmRelease
Mohammed Naser2145fc32023-01-29 23:23:03 +000026 name: "{{ magnum_helm_release_name }}"
27 namespace: "{{ magnum_helm_release_namespace }}"
Mohammed Naserfef69422023-01-18 02:38:06 +000028 definition:
29 spec:
30 suspend: true
31
32 - name: Remove the existing HelmRelease
33 kubernetes.core.k8s:
34 state: absent
35 api_version: helm.toolkit.fluxcd.io/v2beta1
36 kind: HelmRelease
Mohammed Naser2145fc32023-01-29 23:23:03 +000037 name: "{{ magnum_helm_release_name }}"
38 namespace: "{{ magnum_helm_release_namespace }}"
Mohammed Naserfef69422023-01-18 02:38:06 +000039
okozachenko120319b530e2023-01-27 23:52:04 +110040- name: Deploy cluster api
41 kubernetes.core.k8s:
42 kubeconfig: /etc/kubernetes/admin.conf
43 state: present
44 template:
45 - path: 'templates/capi-bootstrap.yml.j2'
46 - path: 'templates/capi-control-plane.yml.j2'
47 - path: 'templates/capi-core.yml.j2'
48 - path: 'templates/capi-provider.yml.j2'
49 - path: 'templates/capi-rbac.yml.j2'
50 run_once: true
okozachenko12035b9d0f12023-01-28 01:24:40 +110051 changed_when: false
okozachenko120319b530e2023-01-27 23:52:04 +110052
Mohammed Naserfef69422023-01-18 02:38:06 +000053- name: Deploy Helm chart
54 run_once: true
55 kubernetes.core.helm:
Mohammed Naser2145fc32023-01-29 23:23:03 +000056 name: "{{ magnum_helm_release_name }}"
57 chart_ref: "{{ magnum_helm_chart_ref }}"
58 release_namespace: "{{ magnum_helm_release_namespace }}"
Mohammed Naserfef69422023-01-18 02:38:06 +000059 create_namespace: true
60 kubeconfig: /etc/kubernetes/admin.conf
Mohammed Naser2145fc32023-01-29 23:23:03 +000061 values: "{{ _magnum_helm_values | combine(magnum_helm_values, recursive=True) }}"
Mohammed Naser096ade02022-12-15 09:53:33 -050062
Mohammed Naser4c33bb52023-01-18 03:23:18 +000063- name: Create Ingress
64 ansible.builtin.include_role:
65 name: openstack_helm_ingress
66 vars:
67 openstack_helm_ingress_endpoint: container_infra
68 openstack_helm_ingress_service_name: magnum-api
69 openstack_helm_ingress_service_port: 9511
Mohammed Naser2145fc32023-01-29 23:23:03 +000070 openstack_helm_ingress_annotations: "{{ magnum_ingress_annotations }}"
Mohammed Naser4c33bb52023-01-18 03:23:18 +000071
okozachenko120319b530e2023-01-27 23:52:04 +110072- name: Deploy magnum registry
Mohammed Naser096ade02022-12-15 09:53:33 -050073 kubernetes.core.k8s:
74 state: present
75 definition:
76 - apiVersion: v1
77 kind: PersistentVolumeClaim
78 metadata:
79 labels:
80 application: magnum
81 component: registry
82 name: magnum-registry
83 namespace: openstack
84 spec:
85 accessModes:
86 - ReadWriteOnce
87 resources:
88 requests:
89 storage: 50Gi
Mohammed Naser096ade02022-12-15 09:53:33 -050090
91 - apiVersion: apps/v1
92 kind: Deployment
93 metadata:
94 labels:
95 application: magnum
96 component: registry
97 name: magnum-registry
98 namespace: openstack
99 spec:
100 replicas: 1
101 selector:
102 matchLabels:
103 application: magnum
104 component: registry
105 strategy:
106 type: Recreate
107 template:
108 metadata:
109 labels:
110 application: magnum
111 component: registry
112 spec:
113 containers:
114 - name: registry
115 env:
116 - name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
117 value: /var/lib/registry
118 - name: REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED
119 value: "true"
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100120 image: "{{ atmosphere_images['magnum_registry'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500121 ports:
122 - containerPort: 5000
123 name: registry
124 protocol: TCP
125 livenessProbe:
126 httpGet:
127 path: /
128 port: 5000
129 scheme: HTTP
130 readinessProbe:
131 httpGet:
132 path: /
133 port: 5000
134 scheme: HTTP
135 volumeMounts:
136 - mountPath: /var/lib/registry
137 name: magnum-registry
138 nodeSelector:
139 openstack-control-plane: enabled
140 volumes:
141 - name: magnum-registry
142 persistentVolumeClaim:
143 claimName: magnum-registry
144
145 - apiVersion: v1
146 kind: Service
147 metadata:
148 labels:
149 application: magnum
150 component: registry
151 name: magnum-registry
152 namespace: openstack
153 spec:
154 ports:
155 - name: magnum
156 port: 5000
157 protocol: TCP
158 targetPort: 5000
159 selector:
160 application: magnum
161 component: registry
162 type: ClusterIP
163
164 - apiVersion: batch/v1
165 kind: Job
166 metadata:
167 labels:
168 application: magnum
169 component: registry
170 name: magnum-registry-init
171 namespace: openstack
172 spec:
173 backoffLimit: 5
174 template:
175 metadata:
176 labels:
177 application: magnum
178 spec:
179 restartPolicy: OnFailure
180 containers:
181 - args:
182 - copy
183 - --dest-tls-verify=false
184 - docker://docker.io/calico/cni:v3.13.1
185 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/cni:v3.13.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100186 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500187 name: magnum-cni-v3-13-1
188 - args:
189 - copy
190 - --dest-tls-verify=false
191 - docker://docker.io/calico/kube-controllers:v3.13.1
192 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/kube-controllers:v3.13.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100193 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500194 name: magnum-kube-controllers-v3-13-1
195 - args:
196 - copy
197 - --dest-tls-verify=false
198 - docker://docker.io/calico/node:v3.13.1
199 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/node:v3.13.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100200 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500201 name: magnum-node-v3-13-1
202 - args:
203 - copy
204 - --dest-tls-verify=false
205 - docker://docker.io/calico/pod2daemon-flexvol:v3.13.1
206 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/pod2daemon-flexvol:v3.13.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100207 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500208 name: magnum-pod2daemon-flexvol-v3-13-1
209 - args:
210 - copy
211 - --dest-tls-verify=false
212 - docker://docker.io/coredns/coredns:1.6.6
213 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/coredns:1.6.6
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100214 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500215 name: magnum-coredns-1-6-6
216 - args:
217 - copy
218 - --dest-tls-verify=false
219 - docker://docker.io/k8scloudprovider/cinder-csi-plugin:v1.18.0
220 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/cinder-csi-plugin:v1.18.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100221 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500222 name: magnum-cinder-csi-plugin-v1-18-0
223 - args:
224 - copy
225 - --dest-tls-verify=false
226 - docker://docker.io/k8scloudprovider/k8s-keystone-auth:v1.18.0
227 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/k8s-keystone-auth:v1.18.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100228 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500229 name: magnum-k8s-keystone-auth-v1-18-0
230 - args:
231 - copy
232 - --dest-tls-verify=false
233 - docker://docker.io/k8scloudprovider/magnum-auto-healer:v1.18.0
234 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/magnum-auto-healer:v1.18.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100235 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500236 name: magnum-magnum-auto-healer-v1-18-0
237 - args:
238 - copy
239 - --dest-tls-verify=false
240 - docker://docker.io/k8scloudprovider/openstack-cloud-controller-manager:v1.18.0
241 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/openstack-cloud-controller-manager:v1.18.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100242 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500243 name: magnum-openstack-cloud-controller-manager-v1-18-0
244 - args:
245 - copy
246 - --dest-tls-verify=false
247 - docker://docker.io/kubernetesui/dashboard:v2.0.0
248 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/dashboard:v2.0.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100249 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500250 name: magnum-dashboard-v2-0-0
251 - args:
252 - copy
253 - --dest-tls-verify=false
254 - docker://docker.io/kubernetesui/metrics-scraper:v1.0.4
255 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/metrics-scraper:v1.0.4
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100256 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500257 name: magnum-metrics-scraper-v1-0-4
258 - args:
259 - copy
260 - --dest-tls-verify=false
261 - docker://docker.io/openstackmagnum/cluster-autoscaler:v1.22.0
262 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/cluster-autoscaler:v1.22.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100263 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500264 name: magnum-cluster-autoscaler-v1-22-0
265 - args:
266 - copy
267 - --dest-tls-verify=false
268 - docker://docker.io/openstackmagnum/heat-container-agent:wallaby-stable-1
269 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/heat-container-agent:wallaby-stable-1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100270 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500271 name: magnum-heat-container-agent-wallaby-stable-1
272 - args:
273 - copy
274 - --dest-tls-verify=false
275 - docker://docker.io/planetlabs/draino:abf028a
276 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/draino:abf028a
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100277 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500278 name: magnum-draino-abf028a
279 - args:
280 - copy
281 - --dest-tls-verify=false
282 - docker://docker.io/rancher/hyperkube:v1.19.11-rancher1
283 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/hyperkube:v1.19.11
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100284 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500285 name: magnum-hyperkube-v1-19-11
286 - args:
287 - copy
288 - --dest-tls-verify=false
289 - docker://docker.io/rancher/hyperkube:v1.20.7-rancher1
290 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/hyperkube:v1.20.7
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100291 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500292 name: magnum-hyperkube-v1-20-7
293 - args:
294 - copy
295 - --dest-tls-verify=false
296 - docker://docker.io/rancher/hyperkube:v1.21.1-rancher1
297 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/hyperkube:v1.21.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100298 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500299 name: magnum-hyperkube-v1-21-1
300 - args:
301 - copy
302 - --dest-tls-verify=false
303 - docker://gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.1.2
304 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/cluster-proportional-autoscaler-amd64:1.1.2
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100305 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500306 name: magnum-cluster-proportional-autoscaler-amd64-1-1-2
307 - args:
308 - copy
309 - --dest-tls-verify=false
310 - docker://gcr.io/google_containers/metrics-server-amd64:v0.3.5
311 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/metrics-server-amd64:v0.3.5
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100312 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500313 name: magnum-metrics-server-amd64-v0-3-5
314 - args:
315 - copy
316 - --dest-tls-verify=false
317 - docker://gcr.io/google_containers/node-problem-detector:v0.6.2
318 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/node-problem-detector:v0.6.2
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100319 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500320 name: magnum-node-problem-detector-v0-6-2
321 - args:
322 - copy
323 - --dest-tls-verify=false
324 - docker://gcr.io/google_containers/pause:3.1
325 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/pause:3.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100326 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500327 name: magnum-pause-3-1
328 - args:
329 - copy
330 - --dest-tls-verify=false
331 - docker://quay.io/coreos/etcd:v3.4.6
332 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/etcd:v3.4.6
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100333 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500334 name: magnum-etcd-v3-4-6
335 - args:
336 - copy
337 - --dest-tls-verify=false
338 - docker://quay.io/k8scsi/csi-attacher:v2.0.0
339 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/csi-attacher:v2.0.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100340 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500341 name: magnum-csi-attacher-v2-0-0
342 - args:
343 - copy
344 - --dest-tls-verify=false
345 - docker://quay.io/k8scsi/csi-node-driver-registrar:v1.1.0
346 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/csi-node-driver-registrar:v1.1.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100347 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500348 name: magnum-csi-node-driver-registrar-v1-1-0
349 - args:
350 - copy
351 - --dest-tls-verify=false
352 - docker://quay.io/k8scsi/csi-provisioner:v1.4.0
353 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/csi-provisioner:v1.4.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100354 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500355 name: magnum-csi-provisioner-v1-4-0
356 - args:
357 - copy
358 - --dest-tls-verify=false
359 - docker://quay.io/k8scsi/csi-resizer:v0.3.0
360 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/csi-resizer:v0.3.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100361 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500362 name: magnum-csi-resizer-v0-3-0
363 - args:
364 - copy
365 - --dest-tls-verify=false
366 - docker://quay.io/k8scsi/csi-snapshotter:v1.2.2
367 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/csi-snapshotter:v1.2.2
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100368 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500369 name: magnum-csi-snapshotter-v1-2-2
370 nodeSelector:
371 openstack-control-plane: enabled
372
Mohammed Naser096ade02022-12-15 09:53:33 -0500373- name: Create magnum registry Ingress
374 ansible.builtin.include_role:
375 name: openstack_helm_ingress
376 vars:
377 openstack_helm_ingress_endpoint: container_infra_registry
378 openstack_helm_ingress_service_name: magnum-registry
379 openstack_helm_ingress_service_port: 5000
380
381- name: Create k8s images
Mohammed Naser2145fc32023-01-29 23:23:03 +0000382 when: magnum_images | length > 0
Mohammed Naser096ade02022-12-15 09:53:33 -0500383 block:
384 - name: Wait until image service ready
385 kubernetes.core.k8s_info:
386 api_version: apps/v1
387 kind: Deployment
388 name: glance-api
389 namespace: openstack
390 wait_sleep: 10
391 wait_timeout: 600
392 wait: true
393 wait_condition:
394 type: Available
395 status: true
396
397 - name: Download images
398 ansible.builtin.get_url:
399 url: "{{ item.source_url | regex_replace('\\/$', '') }}/{{ item.image_file }}"
400 dest: "/tmp/{{ item.image_file }}"
401 mode: "0600"
Mohammed Naser2145fc32023-01-29 23:23:03 +0000402 loop: "{{ magnum_images }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500403
404 - name: Upload images
405 openstack.cloud.image:
406 cloud: atmosphere
407 name: "{{ item.name }}"
408 state: present
409 filename: "/tmp/{{ item.image_file }}"
410 container_format: "{{ item.container_format | default(omit) }}"
411 disk_format: "{{ item.disk_format | default(omit) }}"
412 properties:
413 os_distro: ubuntu-focal
Mohammed Naser2145fc32023-01-29 23:23:03 +0000414 loop: "{{ magnum_images }}"
Mohammed Naser52c3a702023-02-02 02:03:34 +0000415 # NOTE(mnaser): This often fails since the SSL certificates are not
416 # ready yet. We need to wait for them to be ready.
417 retries: 60
418 delay: 5
419 register: _result
420 until: _result is not failed