|
61 | 61 | CONTROLLER3_SSH="{{ controller3_ssh }}" |
62 | 62 | when: not ospdo_src| bool |
63 | 63 |
|
64 | | -- name: start an adoption helper pod |
65 | | - vars: |
66 | | - internalapi_default_nad: >- |
67 | | - {% if not (bgp | bool) -%} |
68 | | - '[{"name":"internalapi","namespace":"openstack"}]' |
69 | | - {% else -%} |
70 | | - '[{"name":"internalapi","namespace":"openstack","default-route":["{{ internalapi_prefix | default('172.17.0') }}.1"]}]' |
71 | | - {% endif -%} |
72 | | - ansible.builtin.shell: |- |
73 | | - {{ shell_header }} |
74 | | - {{ oc_header }} |
75 | | - {{ ovn_copy_shell_vars }} |
76 | | -
|
77 | | - oc apply -f - <<EOF |
78 | | - --- |
79 | | - apiVersion: cert-manager.io/v1 |
80 | | - kind: Certificate |
81 | | - metadata: |
82 | | - name: ovn-data-cert |
83 | | - spec: |
84 | | - commonName: ovn-data-cert |
85 | | - secretName: ovn-data-cert |
86 | | - issuerRef: |
87 | | - name: rootca-internal |
88 | | - --- |
89 | | - apiVersion: v1 |
90 | | - kind: PersistentVolumeClaim |
91 | | - metadata: |
92 | | - name: ovn-data |
93 | | - labels: |
94 | | - app: adoption |
95 | | - spec: |
96 | | - storageClassName: $STORAGE_CLASS |
97 | | - accessModes: |
98 | | - - ReadWriteOnce |
99 | | - resources: |
100 | | - requests: |
101 | | - storage: 10Gi |
102 | | - --- |
103 | | - apiVersion: v1 |
104 | | - kind: Pod |
105 | | - metadata: |
106 | | - name: ovn-copy-data |
107 | | - annotations: |
108 | | - openshift.io/scc: anyuid |
109 | | - k8s.v1.cni.cncf.io/networks: {{ copy_pods_custom_networks | default(internalapi_default_nad) }} |
110 | | - labels: |
111 | | - app: adoption |
112 | | - spec: |
113 | | - {{ copy_pods_custom_spec|default('') }} |
114 | | - containers: |
115 | | - - image: $OVSDB_IMAGE |
116 | | - command: [ "sh", "-c", "sleep infinity"] |
117 | | - name: adoption |
118 | | - volumeMounts: |
119 | | - - mountPath: /backup |
120 | | - name: ovn-data |
121 | | - - mountPath: /etc/pki/tls/misc |
122 | | - name: ovn-data-cert |
123 | | - readOnly: true |
124 | | - securityContext: |
125 | | - allowPrivilegeEscalation: false |
126 | | - capabilities: |
127 | | - drop: ALL |
128 | | - runAsNonRoot: true |
129 | | - seccompProfile: |
130 | | - type: RuntimeDefault |
131 | | - volumes: |
132 | | - - name: ovn-data |
133 | | - persistentVolumeClaim: |
134 | | - claimName: ovn-data |
135 | | - - name: ovn-data-cert |
136 | | - secret: |
137 | | - secretName: ovn-data-cert |
138 | | - EOF |
139 | | - changed_when: true |
140 | | - notify: delete adoption helper pod and pvc |
141 | | - |
142 | | -- name: wait for the pod to come up |
143 | | - ansible.builtin.shell: | |
144 | | - {{ shell_header }} |
145 | | - {{ oc_header }} |
146 | | - oc wait --for condition=Ready pod/ovn-copy-data --timeout=30s |
147 | | - register: ovn_data_pod_result |
148 | | - until: ovn_data_pod_result is success |
149 | | - retries: 2 |
150 | | - delay: "{{ ovn_retry_delay }}" |
151 | | - |
152 | 64 | - name: stop northd service |
153 | 65 | no_log: "{{ use_no_log }}" |
154 | 66 | ansible.builtin.shell: | |
|
203 | 115 | ansible.builtin.pause: |
204 | 116 | seconds: 60 |
205 | 117 |
|
206 | | -- name: dump OVN databases using tcp connection |
207 | | - no_log: "{{ use_no_log }}" |
208 | | - ansible.builtin.shell: | |
209 | | - {{ shell_header }} |
210 | | - {{ oc_header }} |
211 | | - {{ ovn_copy_shell_vars }} |
212 | | -
|
213 | | - oc exec ovn-copy-data -- bash -c "ovsdb-client backup tcp:$SOURCE_OVSDB_IP:6641 > /backup/ovs-nb.db" |
214 | | - oc exec ovn-copy-data -- bash -c "ovsdb-client backup tcp:$SOURCE_OVSDB_IP:6642 > /backup/ovs-sb.db" |
215 | | - when: enable_tlse|bool is false |
216 | | - |
217 | | -- name: dump OVN databases using ssl connection |
218 | | - no_log: "{{ use_no_log }}" |
219 | | - ansible.builtin.shell: | |
220 | | - {{ shell_header }} |
221 | | - {{ oc_header }} |
222 | | - {{ ovn_copy_shell_vars }} |
223 | | -
|
224 | | - oc exec ovn-copy-data -- bash -c "ovsdb-client backup --ca-cert=/etc/pki/tls/misc/ca.crt --private-key=/etc/pki/tls/misc/tls.key --certificate=/etc/pki/tls/misc/tls.crt ssl:$SOURCE_OVSDB_IP:6641 > /backup/ovs-nb.db" |
225 | | - oc exec ovn-copy-data -- bash -c "ovsdb-client backup --ca-cert=/etc/pki/tls/misc/ca.crt --private-key=/etc/pki/tls/misc/tls.key --certificate=/etc/pki/tls/misc/tls.crt ssl:$SOURCE_OVSDB_IP:6642 > /backup/ovs-sb.db" |
226 | | - when: enable_tlse|bool |
227 | | - |
228 | | -- name: upgrade OVN databases to the latest schema from podified ovsdb-servers |
229 | | - no_log: "{{ use_no_log }}" |
230 | | - ansible.builtin.shell: | |
231 | | - {{ shell_header }} |
232 | | - {{ oc_header }} |
233 | | - {{ ovn_copy_shell_vars }} |
234 | | -
|
235 | | - oc exec ovn-copy-data -- bash -c "ovsdb-client get-schema tcp:$PODIFIED_OVSDB_NB_IP:6641 > /backup/ovs-nb.ovsschema && ovsdb-tool convert /backup/ovs-nb.db /backup/ovs-nb.ovsschema" |
236 | | - oc exec ovn-copy-data -- bash -c "ovsdb-client get-schema tcp:$PODIFIED_OVSDB_SB_IP:6642 > /backup/ovs-sb.ovsschema && ovsdb-tool convert /backup/ovs-sb.db /backup/ovs-sb.ovsschema" |
237 | | - when: enable_tlse|bool is false |
238 | | - |
239 | | -- name: upgrade OVN databases to the latest schema from podified ovsdb-servers (tls) |
240 | | - no_log: "{{ use_no_log }}" |
241 | | - ansible.builtin.shell: | |
242 | | - {{ shell_header }} |
243 | | - {{ oc_header }} |
244 | | - {{ ovn_copy_shell_vars }} |
245 | | -
|
246 | | - oc exec ovn-copy-data -- bash -c "ovsdb-client get-schema --ca-cert=/etc/pki/tls/misc/ca.crt --private-key=/etc/pki/tls/misc/tls.key \ |
247 | | - --certificate=/etc/pki/tls/misc/tls.crt ssl:$PODIFIED_OVSDB_NB_IP:6641 > /backup/ovs-nb.ovsschema && ovsdb-tool convert /backup/ovs-nb.db /backup/ovs-nb.ovsschema" |
248 | | - oc exec ovn-copy-data -- bash -c "ovsdb-client get-schema --ca-cert=/etc/pki/tls/misc/ca.crt --private-key=/etc/pki/tls/misc/tls.key \ |
249 | | - --certificate=/etc/pki/tls/misc/tls.crt ssl:$PODIFIED_OVSDB_SB_IP:6642 > /backup/ovs-sb.ovsschema && ovsdb-tool convert /backup/ovs-sb.db /backup/ovs-sb.ovsschema" |
250 | | - when: enable_tlse|bool |
251 | | - |
252 | | -- name: restore OVN database backup to podified ovsdb-servers - {{ item }} |
253 | | - vars: |
254 | | - ovn_db_ip: "{{ 'PODIFIED_OVSDB_NB_IP' if item == 'nb' else 'PODIFIED_OVSDB_SB_IP' }}" |
255 | | - ovn_db_port: "{{ '6641' if item == 'nb' else '6642' }}" |
256 | | - ovn_db_file: "ovs-{{ item }}.db" |
257 | | - tls_opts: "{{ '--ca-cert=/etc/pki/tls/misc/ca.crt --private-key=/etc/pki/tls/misc/tls.key --certificate=/etc/pki/tls/misc/tls.crt' if enable_tlse | bool else '' }}" |
258 | | - proto: "{{ 'ssl' if enable_tlse | bool else 'tcp' }}" |
259 | | - no_log: "{{ use_no_log }}" |
260 | | - ansible.builtin.shell: | |
261 | | - {{ shell_header }} |
262 | | - {{ oc_header }} |
263 | | - {{ ovn_copy_shell_vars }} |
264 | | -
|
265 | | - oc exec ovn-copy-data -- bash -c "ovsdb-client -v restore {{ tls_opts }} {{ proto }}:${{ ovn_db_ip }}:{{ ovn_db_port }} < /backup/{{ ovn_db_file }}" |
266 | | - register: podified_ovn_db_restore |
267 | | - until: podified_ovn_db_restore is success |
268 | | - retries: 5 |
269 | | - delay: "{{ ovn_retry_delay }}" |
270 | | - loop: |
271 | | - - nb |
272 | | - - sb |
| 118 | +- name: migrate OVN databases using cluster-to-standalone conversion |
| 119 | + ansible.builtin.include_tasks: cluster_to_standalone.yaml |
273 | 120 |
|
274 | 121 | - name: deploy podified OVN northd service to keep databases in sync |
275 | 122 | ansible.builtin.shell: | |
|
0 commit comments