blob: 9a2f9bf21afb044c8d02542dd835e3fd3d9972ca [file] [log] [blame]
okozachenko1203d883bc32023-07-31 19:25:46 +10001- name: Create a secret for Percona XtraDB cluster passwords
2 run_once: true
okozachenko120323f7aaf2023-07-31 22:14:23 +10003 block:
4 - name: Check if the Percona XtraDB cluster secret exists
5 kubernetes.core.k8s_info:
6 api_version: v1
7 kind: Secret
okozachenko1203d883bc32023-07-31 19:25:46 +10008 name: percona-xtradb
9 namespace: openstack
okozachenko120323f7aaf2023-07-31 22:14:23 +100010 register: _pxc_secret
11 ignore_errors: true
12
13 - name: Create a secret
14 when: ( _pxc_secret.resources | length==0 )
15 kubernetes.core.k8s:
16 state: present
17 definition:
18 apiVersion: v1
19 stringData:
20 clustercheck: "{{ lookup('password', '/dev/null chars=ascii_lowercase,ascii_uppercase,digits length=32') }}"
21 monitor: "{{ lookup('password', '/dev/null chars=ascii_lowercase,ascii_uppercase,digits length=32') }}"
22 operator: "{{ lookup('password', '/dev/null chars=ascii_lowercase,ascii_uppercase,digits length=32') }}"
23 proxyadmin: "{{ lookup('password', '/dev/null chars=ascii_lowercase,ascii_uppercase,digits length=32') }}"
24 replication: "{{ lookup('password', '/dev/null chars=ascii_lowercase,ascii_uppercase,digits length=32') }}"
25 root: "{{ lookup('password', '/dev/null chars=ascii_lowercase,ascii_uppercase,digits length=32') }}"
26 xtrabackup: "{{ lookup('password', '/dev/null chars=ascii_lowercase,ascii_uppercase,digits length=32') }}"
27 kind: Secret
28 metadata:
29 name: percona-xtradb
30 namespace: openstack
31 type: Opaque
okozachenko1203d883bc32023-07-31 19:25:46 +100032
Oleksandr K249d3db2023-12-06 16:35:23 +010033- name: Check if the Percona XtraDB cluster exists
34 run_once: true
35 block:
36 - name: Check if the Percona XtraDB cluster exists
37 kubernetes.core.k8s_info:
38 api_version: pxc.percona.com/v1
39 kind: PerconaXtraDBCluster
40 name: percona-xtradb
41 namespace: openstack
42 register: _pxc_cluster
43 ignore_errors: true
44
45 - name: Get current status of the cluster
46 ansible.builtin.set_fact:
47 _pxc_version: "{{ _pxc_cluster.resources[0].status.pxc.version }}"
48 _pxc_status: "{{ _pxc_cluster.resources[0].status.state }}"
49 when: ( _pxc_cluster.resources | length==1 )
50
51- name: Do version upgrade
52 run_once: true
53 when:
54 - _pxc_version is defined
55 - _pxc_status is defined
56 - _pxc_version.startswith('5.7')
57 - (atmosphere_images['percona_xtradb_cluster'] | vexxhost.kubernetes.docker_image('tag')).startswith('8.')
58 block:
59 - name: Assert that the cluster is healthy before upgrade
60 run_once: true
61 ansible.builtin.assert:
62 that:
63 - _pxc_status == 'ready'
64 fail_msg: >-
65 The Percona XtraDB Cluster is not healthy. Please fix the cluster manually first before upgrade.
66
67 - name: Stop PXC-operator
68 kubernetes.core.k8s_scale:
69 api_version: v1
70 kind: Deployment
71 name: pxc-operator
72 namespace: openstack
73 replicas: 0
74 wait_timeout: 60
75
76 - name: Change the cluster Statefulset image to 8.0
77 kubernetes.core.k8s_json_patch:
78 api_version: apps/v1
79 kind: StatefulSet
80 namespace: openstack
81 name: percona-xtradb-pxc
82 patch:
83 - op: replace
84 path: /spec/template/spec/containers/0/image
85 value: "{{ atmosphere_images['percona_xtradb_cluster'] | vexxhost.kubernetes.docker_image('ref') }}"
86
87 - name: Wait until the cluster Statefulset rollout
88 kubernetes.core.k8s_info:
89 api_version: apps/v1
90 kind: StatefulSet
91 name: percona-xtradb-pxc
92 namespace: openstack
93 register: _pxc_cluster_sts
94 retries: 120
95 delay: 5
96 until:
97 - _pxc_cluster_sts.resources[0].status.replicas == _pxc_cluster_sts.resources[0].status.readyReplicas
98
99 - name: Update pxc cluster spec
100 kubernetes.core.k8s:
101 definition:
102 apiVersion: pxc.percona.com/v1
103 kind: PerconaXtraDBCluster
104 metadata:
105 name: percona-xtradb
106 namespace: openstack
107 spec:
108 pxc:
109 image: "{{ atmosphere_images['percona_xtradb_cluster'] | vexxhost.kubernetes.docker_image('ref') }}"
110 wait_sleep: 1
111 wait_timeout: 600
112 wait: true
113 wait_condition:
114 type: ready
115 status: true
116
117 - name: Start PXC-operator
118 kubernetes.core.k8s_scale:
119 api_version: v1
120 kind: Deployment
121 name: pxc-operator
122 namespace: openstack
123 replicas: 1
124 wait_timeout: 60
125
126- name: Apply Percona XtraDB cluster
Mohammed Naser6aa0b912023-01-12 21:54:14 -0500127 run_once: true
128 kubernetes.core.k8s:
129 state: present
130 definition:
okozachenko1203398e0b52023-07-06 19:59:24 +1000131 apiVersion: pxc.percona.com/v1
Mohammed Naser6aa0b912023-01-12 21:54:14 -0500132 kind: PerconaXtraDBCluster
133 metadata:
134 name: percona-xtradb
135 namespace: openstack
136 spec: "{{ _percona_xtradb_cluster_spec | combine(percona_xtradb_cluster_spec, recursive=True) }}"
137 wait_sleep: 1
Michiel Piscaera4b05aa2024-10-23 22:12:00 +0200138 wait_timeout: 900
Mohammed Naser6aa0b912023-01-12 21:54:14 -0500139 wait: true
140 wait_condition:
141 type: ready
142 status: true