Skip to content

Commit 23bbbbc

Browse files
authored
Merge branch 'main' into add-rally-role
2 parents 9e3f089 + e7cb5c1 commit 23bbbbc

16 files changed

Lines changed: 1155 additions & 59 deletions

docs/dictionary/en-custom.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ UTF
3333
ZipFile
3434
aaabbcc
3535
abcdefghij
36+
accesstoken
3637
addr
3738
aes
3839
afuscoar
@@ -53,6 +54,7 @@ args
5354
arx
5455
arxcruz
5556
auth
57+
authcode
5658
authfile
5759
autoconfiguration
5860
autoheld
@@ -121,6 +123,7 @@ cjeanner
121123
ckcg
122124
cli
123125
client
126+
clientcredentials
124127
clusterimageset
125128
clusterpool
126129
cmd
@@ -177,6 +180,7 @@ dev
177180
devscript
178181
devscripts
179182
devsetup
183+
deviceauthz
180184
dfb
181185
dfce
182186
dfg
@@ -315,11 +319,15 @@ junos
315319
jxe
316320
jzxbol
317321
kcgpby
322+
kctestuser1
323+
kctestuser2
318324
keepalived
319325
kerberos
320326
keycloak
321327
keypair
322328
keyring
329+
keystoneauth
330+
keystoneauth1
323331
keytab
324332
kinit
325333
kni
@@ -393,6 +401,7 @@ mtu
393401
multiline
394402
multinode
395403
multipath
404+
multirealm
396405
multus
397406
myorg
398407
mysqld
@@ -445,6 +454,10 @@ ocpbm
445454
ocppr
446455
odkvmf
447456
oidc
457+
oidcaccesstoken
458+
oidcauthcode
459+
oidcclientcredentials
460+
oidcpassword
448461
okd
449462
ol
450463
olm
@@ -652,6 +665,11 @@ usermod
652665
usr
653666
utils
654667
uuid
668+
v3oidcaccesstoken
669+
v3oidcauthcode
670+
v3oidcclientcredentials
671+
v3oidcdeviceauthz
672+
v3oidcpassword
655673
vbibob
656674
vbmc
657675
vcgvuc
Lines changed: 310 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,310 @@
1+
---
2+
# This is a pre_infra ci-framework hook that will configure the cluster for
3+
# disconnected deployment. The variable: cifmw_ci_gen_kustomize_values_ooi_image
4+
# must be specified. These examples for that variable are supported:
5+
#
6+
# registry-proxy.engineering.redhat.com/rh-osbs/iib:1125611
7+
# registry.redhat.io/redhat/redhat-operator-index:v4.18
8+
#
9+
# Due to being in deprecated sqlite format this is unsupported:
10+
# images.paas.redhat.com/podified-main-rhos-18-rhel-9/openstack-operator-index:trunk-patches-latest
11+
#
12+
# sqlite requires deprecated v1 oc-mirror workflow instead of the supported v2
13+
# oc-mirror workflow
14+
#
15+
#
16+
- name: Update cluster for disconnected deployment
17+
hosts: "{{ cifmw_target_host | default('localhost') }}"
18+
vars:
19+
oc_mirror_download_url: "{{ cifmw_disconnected_mirror_url | default('https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/latest/oc-mirror.rhel9.tar.gz') }}"
20+
mirror_registry_url: "{{ cifmw_disconnected_registry_url | default('https://mirror.openshift.com/pub/cgw/mirror-registry/latest/mirror-registry-amd64.tar.gz') }}"
21+
disconnect_working_dir: "{{ cifmw_disconnected_working_dir | default('/home/zuul/disconnect_working_dir') }}"
22+
mirror_location: "{{ disconnect_working_dir }}/mirror_location"
23+
local_registry: "{{ disconnect_working_dir }}/local_registry"
24+
oc_mirror_cert_manager_catalog_url: "{{ cifmw_cert_manager_catalog_url | default('registry.redhat.io/redhat/redhat-operator-index:v4.18') }}"
25+
tasks:
26+
- name: Create disconnected working directories
27+
ansible.builtin.file:
28+
path: "{{ item }}"
29+
state: directory
30+
mode: '0777'
31+
loop:
32+
- "{{ disconnect_working_dir }}"
33+
- "{{ mirror_location }}"
34+
- "{{ local_registry }}"
35+
36+
- name: Download oc mirror image to controller
37+
ansible.builtin.get_url:
38+
url: "{{ oc_mirror_download_url }}"
39+
dest: "{{ disconnect_working_dir }}/oc-mirror.rhel9.tar.gz"
40+
mode: '0644'
41+
42+
- name: Extract downloaded oc mirror archive
43+
ansible.builtin.unarchive:
44+
src: "{{ disconnect_working_dir }}/oc-mirror.rhel9.tar.gz"
45+
dest: "{{ disconnect_working_dir }}"
46+
remote_src: true
47+
48+
- name: Make oc mirror executable
49+
ansible.builtin.command:
50+
cmd: chmod +x {{ disconnect_working_dir }}/oc-mirror
51+
52+
- name: Move oc mirror to bin directory
53+
become: true
54+
ansible.builtin.command:
55+
cmd: mv {{ disconnect_working_dir }}/oc-mirror /usr/local/bin/.
56+
57+
- name: Get host FQDN
58+
ansible.builtin.command:
59+
cmd: hostname -f
60+
register: host_fqdn
61+
62+
- name: Create mirror location file
63+
become: true
64+
ansible.builtin.copy:
65+
dest: "/etc/containers/registries.conf.d/010-stage.conf"
66+
mode: '0644'
67+
content: |
68+
unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
69+
short-name-mode = ""
70+
71+
[[registry]]
72+
prefix = ""
73+
location = "registry.redhat.io"
74+
75+
[[registry.mirror]]
76+
location = "registry.stage.redhat.io"
77+
pull-from-mirror = "digest-only"
78+
79+
- name: Create update service namespace
80+
kubernetes.core.k8s:
81+
state: present
82+
definition:
83+
apiVersion: v1
84+
kind: Namespace
85+
metadata:
86+
name: openshift-update-service
87+
annotations:
88+
openshift.io/node-selector: ""
89+
labels:
90+
openshift.io/cluster-monitoring: "true"
91+
92+
- name: Create update service operator group
93+
kubernetes.core.k8s:
94+
state: present
95+
definition:
96+
apiVersion: operators.coreos.com/v1
97+
kind: OperatorGroup
98+
metadata:
99+
name: update-service-operator-group
100+
namespace: openshift-update-service
101+
spec:
102+
targetNamespaces:
103+
- openshift-update-service
104+
105+
- name: Create subscription service
106+
kubernetes.core.k8s:
107+
state: present
108+
definition:
109+
apiVersion: operators.coreos.com/v1alpha1
110+
kind: Subscription
111+
metadata:
112+
name: update-service-subscription
113+
namespace: openshift-update-service
114+
spec:
115+
channel: v1
116+
installPlanApproval: "Automatic"
117+
source: "redhat-operators"
118+
sourceNamespace: "openshift-marketplace"
119+
name: "cincinnati-operator"
120+
121+
- name: Wait for update service operator to be installed
122+
ansible.builtin.shell: |
123+
set -o pipefail
124+
oc get crd | grep -i updateservice.operator.openshift.io
125+
register: crd_out
126+
until: "'updateservice.operator.openshift.io' in crd_out.stdout"
127+
retries: 10
128+
delay: 30
129+
130+
- name: Create Image Set yaml when two catalogs are required
131+
ansible.builtin.copy:
132+
dest: "{{ disconnect_working_dir }}/imageset-config-v2.yaml"
133+
mode: '0644'
134+
content: |
135+
kind: ImageSetConfiguration
136+
apiVersion: mirror.openshift.io/v2alpha1
137+
mirror:
138+
operators:
139+
- catalog: {{ cifmw_ci_gen_kustomize_values_ooi_image }}
140+
packages:
141+
- name: openstack-operator
142+
- name: local-storage-operator
143+
- catalog: {{ oc_mirror_cert_manager_catalog_url }}
144+
packages:
145+
- name: kubernetes-nmstate-operator
146+
- name: openshift-cert-manager-operator
147+
- name: metallb-operator
148+
- name: lvms-operator
149+
- name: cluster-observability-operator
150+
additionalImages:
151+
- name: registry.redhat.io/ubi8/ubi:latest
152+
- name: registry.redhat.io/ubi9/ubi@sha256:20f695d2a91352d4eaa25107535126727b5945bff38ed36a3e59590f495046f0
153+
when: cifmw_ci_gen_kustomize_values_ooi_image != oc_mirror_cert_manager_catalog_url
154+
155+
- name: Create Image Set yaml when only one catalog is required
156+
ansible.builtin.copy:
157+
dest: "{{ disconnect_working_dir }}/imageset-config-v2.yaml"
158+
mode: '0644'
159+
content: |
160+
kind: ImageSetConfiguration
161+
apiVersion: mirror.openshift.io/v2alpha1
162+
mirror:
163+
operators:
164+
- catalog: {{ cifmw_ci_gen_kustomize_values_ooi_image }}
165+
packages:
166+
- name: openstack-operator
167+
- name: local-storage-operator
168+
- name: kubernetes-nmstate-operator
169+
- name: openshift-cert-manager-operator
170+
- name: metallb-operator
171+
- name: lvms-operator
172+
- name: cluster-observability-operator
173+
additionalImages:
174+
- name: registry.redhat.io/ubi8/ubi:latest
175+
- name: registry.redhat.io/ubi9/ubi@sha256:20f695d2a91352d4eaa25107535126727b5945bff38ed36a3e59590f495046f0
176+
when: cifmw_ci_gen_kustomize_values_ooi_image == oc_mirror_cert_manager_catalog_url
177+
178+
- name: Get registry.redhat.io username and password from pull secret
179+
ansible.builtin.shell: |
180+
set -o pipefail
181+
oc get -n openshift-config secret pull-secret -o json | jq '.data[".dockerconfigjson"]' -r | base64 -d | jq '.auths["registry.redhat.io"].auth' -r | base64 -d
182+
register: pull_secret_user_pass
183+
184+
- name: Login to registry.redhat.io
185+
containers.podman.podman_login:
186+
username: "{{ pull_secret_user_pass.stdout.split(':')[0] }}"
187+
password: "{{ pull_secret_user_pass.stdout.split(':')[1] }}"
188+
registry: "registry.redhat.io"
189+
190+
- name: Login to registry.stage.redhat.io
191+
containers.podman.podman_login:
192+
username: "{{ cifmw_registry_token.credentials.username }}"
193+
password: "{{ cifmw_registry_token.credentials.password }}"
194+
registry: "registry.stage.redhat.io"
195+
196+
- name: Mirror specified image set configuration to disk
197+
ansible.builtin.shell: |
198+
oc mirror --v2 --config {{ disconnect_working_dir }}/imageset-config-v2.yaml file://{{ mirror_location }} >>{{ disconnect_working_dir }}/mirror_images.log
199+
register: mirror_image_result
200+
until: mirror_image_result is not failed
201+
retries: 1
202+
203+
- name: Download mirror registry to controller
204+
ansible.builtin.get_url:
205+
url: "{{ mirror_registry_url }}"
206+
dest: "{{ disconnect_working_dir }}/mirror-registry-amd64.tar.gz"
207+
mode: '0644'
208+
209+
- name: Extract downloaded mirror registry archive
210+
ansible.builtin.unarchive:
211+
src: "{{ disconnect_working_dir }}/mirror-registry-amd64.tar.gz"
212+
dest: "{{ disconnect_working_dir }}"
213+
remote_src: true
214+
215+
- name: Install mirror registry
216+
ansible.builtin.shell: |
217+
{{ disconnect_working_dir }}/mirror-registry install --quayHostname {{ host_fqdn.stdout }} --quayRoot \
218+
{{ local_registry }} --initPassword {{ cifmw_mirror_registry_init_password }} >{{ disconnect_working_dir }}/registry_install.log
219+
220+
- name: Increase gunicorn-web timeout in quay-app container
221+
ansible.builtin.command:
222+
cmd: >
223+
podman exec quay-app {% raw %}sed -i '/command=gunicorn
224+
-c %(ENV_QUAYCONF)s\/gunicorn_web.py web:application/c\command=gunicorn
225+
--timeout 900 -c %(ENV_QUAYCONF)s\/gunicorn_web.py web:application'
226+
/quay-registry/conf/supervisord.conf{% endraw %}
227+
228+
- name: Reread supervisord.conf in quay-app container
229+
ansible.builtin.command:
230+
cmd: podman exec quay-app supervisorctl -c /quay-registry/conf/supervisord.conf reread
231+
232+
- name: Restart gunicorn-web quay-app container with new timeout value
233+
ansible.builtin.command:
234+
cmd: podman exec quay-app supervisorctl -c /quay-registry/conf/supervisord.conf restart gunicorn-web
235+
236+
- name: Copy local registry root certificate to system anchors directory
237+
become: true
238+
ansible.builtin.copy:
239+
src: "{{ local_registry }}/quay-rootCA/rootCA.pem"
240+
dest: /etc/pki/ca-trust/source/anchors/
241+
mode: '0644'
242+
remote_src: true
243+
244+
- name: Configure system to trust mirror registry root ca
245+
become: true
246+
ansible.builtin.command:
247+
cmd: update-ca-trust extract
248+
249+
- name: Login to mirror registry
250+
containers.podman.podman_login:
251+
username: "init"
252+
password: "{{ cifmw_mirror_registry_init_password }}"
253+
registry: "{{ host_fqdn.stdout }}:8443"
254+
255+
- name: Create mirror registry root ca configmap
256+
ansible.builtin.command:
257+
cmd: oc create configmap registry-cas -n openshift-config --from-file={{ host_fqdn.stdout }}..8443={{ local_registry }}/quay-rootCA/rootCA.pem
258+
259+
- name: Patch cluster with mirror registry root ca
260+
ansible.builtin.command:
261+
cmd: oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-cas"}}}' --type=merge
262+
263+
- name: Get cluster's current pull secret
264+
ansible.builtin.shell: |
265+
oc get secret {% raw %}pull-secret -n openshift-config -o template='{{index .data ".dockerconfigjson" | base64decode}}'{% endraw %} > {{ disconnect_working_dir }}/pull-secret.json
266+
267+
- name: Configure cluster to use pull secret from mirror registry
268+
ansible.builtin.shell: |
269+
set -eux
270+
oc registry login --registry {{ host_fqdn.stdout }}:8443 --auth-basic=init:{{ cifmw_mirror_registry_init_password }} --to={{ disconnect_working_dir }}/pull-secret.json
271+
oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson={{ disconnect_working_dir }}/pull-secret.json
272+
273+
- name: Mirror contents of generated image set to target mirror registry
274+
ansible.builtin.shell: |
275+
oc mirror --v2 --config {{ disconnect_working_dir }}/imageset-config-v2.yaml --from file://{{ mirror_location }} docker://{{ host_fqdn.stdout }}:8443 >>{{ disconnect_working_dir }}/mirror_contents.log
276+
register: mirror_contents_result
277+
until: mirror_contents_result is not failed
278+
retries: 1
279+
280+
- name: Disable catalog source
281+
ansible.builtin.shell: |
282+
oc patch OperatorHub cluster --type json -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
283+
284+
- name: Extract image name and tag from catalog source
285+
ansible.builtin.set_fact:
286+
index_image_name_tag: "{{ oc_mirror_cert_manager_catalog_url.split('/') | last | replace(':', '-') | replace('.', '-') }}"
287+
288+
- name: Prepare catalog source for environment
289+
ansible.builtin.replace:
290+
path: "{{ mirror_location }}/working-dir/cluster-resources/cs-{{ index_image_name_tag }}.yaml"
291+
regexp: cs-{{ index_image_name_tag }}
292+
replace: 'redhat-operators'
293+
294+
- name: Apply yaml files from results directory to cluster
295+
ansible.builtin.command:
296+
cmd: oc apply -f {{ mirror_location }}/working-dir/cluster-resources
297+
298+
- name: Wait for mirrored operators to be available
299+
ansible.builtin.command:
300+
cmd: oc get packagemanifests.packages.operators.coreos.com
301+
register: packagemanifest_out
302+
until:
303+
- "'openstack-operator' in packagemanifest_out.stdout"
304+
- "'kubernetes-nmstate-operator' in packagemanifest_out.stdout"
305+
retries: 10
306+
delay: 30
307+
308+
- name: Wait until the OpenShift cluster is stable
309+
ansible.builtin.command:
310+
cmd: oc adm wait-for-stable-cluster --minimum-stable-period=5s --timeout=30m

0 commit comments

Comments
 (0)