Fix race during major-upgrade-pacemaker step
[apex-tripleo-heat-templates.git] / extraconfig / tasks / major_upgrade_pacemaker.yaml
1 heat_template_version: 2016-10-14
2 description: 'Upgrade for Pacemaker deployments'
3
4 parameters:
5   servers:
6     type: json
7   input_values:
8     type: json
9     description: input values for the software deployments
10
11   UpgradeLevelNovaCompute:
12     type: string
13     description: Nova Compute upgrade level
14     default: ''
15   MySqlMajorUpgrade:
16     type: string
17     description: Can be auto,yes,no and influences if the major upgrade should do or detect an automatic mysql upgrade
18     constraints:
19     - allowed_values: ['auto', 'yes', 'no']
20     default: 'auto'
21   IgnoreCephUpgradeWarnings:
22     type: boolean
23     default: false
24     description: If enabled, Ceph upgrade will be forced even though cluster or PGs status is not clean
25   KeepSaharaServicesOnUpgrade:
26     type: boolean
27     default: true
28     description: Whether to keep Sahara services when upgrading controller nodes from mitaka to newton
29
30
31 resources:
32   # TODO(jistr): for Mitaka->Newton upgrades and further we can use
33   # map_merge with input_values instead of feeding params into scripts
34   # via str_replace on bash snippets
35
36   CephMonUpgradeConfig:
37     type: OS::Heat::SoftwareConfig
38     properties:
39       group: script
40       config:
41         list_join:
42         - ''
43         - - str_replace:
44               template: |
45                 #!/bin/bash
46                 ignore_ceph_upgrade_warnings='IGNORE_CEPH_UPGRADE_WARNINGS'
47               params:
48                 IGNORE_CEPH_UPGRADE_WARNINGS: {get_param: IgnoreCephUpgradeWarnings}
49           - get_file: major_upgrade_ceph_mon.sh
50
51   CephMonUpgradeDeployment:
52     type: OS::Heat::SoftwareDeploymentGroup
53     properties:
54       servers: {get_param: [servers, Controller]}
55       config: {get_resource: CephMonUpgradeConfig}
56       input_values: {get_param: input_values}
57     update_policy:
58       batch_create:
59         max_batch_size: 1
60       rolling_update:
61         max_batch_size: 1
62
63   ControllerPacemakerUpgradeConfig_Step1:
64     type: OS::Heat::SoftwareConfig
65     properties:
66       group: script
67       config:
68         list_join:
69         - ''
70         - - str_replace:
71               template: |
72                 #!/bin/bash
73                 upgrade_level_nova_compute='UPGRADE_LEVEL_NOVA_COMPUTE'
74               params:
75                 UPGRADE_LEVEL_NOVA_COMPUTE: {get_param: UpgradeLevelNovaCompute}
76           - str_replace:
77               template: |
78                 #!/bin/bash
79                 mariadb_do_major_upgrade='MYSQL_MAJOR_UPGRADE'
80               params:
81                 MYSQL_MAJOR_UPGRADE: {get_param: MySqlMajorUpgrade}
82           - get_file: pacemaker_common_functions.sh
83           - get_file: major_upgrade_check.sh
84           - get_file: major_upgrade_pacemaker_migrations.sh
85           - get_file: major_upgrade_controller_pacemaker_1.sh
86
87   ControllerPacemakerUpgradeDeployment_Step1:
88     type: OS::Heat::SoftwareDeploymentGroup
89     depends_on: CephMonUpgradeDeployment
90     properties:
91       servers:  {get_param: [servers, Controller]}
92       config: {get_resource: ControllerPacemakerUpgradeConfig_Step1}
93       input_values: {get_param: input_values}
94
95   BlockStorageUpgradeConfig:
96     type: OS::Heat::SoftwareConfig
97     depends_on: ControllerPacemakerUpgradeDeployment_Step1
98     properties:
99       group: script
100       config: {get_file: major_upgrade_block_storage.sh}
101
102   BlockStorageUpgradeDeployment:
103     type: OS::Heat::SoftwareDeploymentGroup
104     properties:
105       servers:  {get_param: [servers, BlockStorage]}
106       config: {get_resource: BlockStorageUpgradeConfig}
107       input_values: {get_param: input_values}
108
109   ControllerPacemakerUpgradeConfig_Step2:
110     type: OS::Heat::SoftwareConfig
111     properties:
112       group: script
113       config:
114         list_join:
115         - ''
116         - - str_replace:
117               template: |
118                 #!/bin/bash
119                 upgrade_level_nova_compute='UPGRADE_LEVEL_NOVA_COMPUTE'
120               params:
121                 UPGRADE_LEVEL_NOVA_COMPUTE: {get_param: UpgradeLevelNovaCompute}
122           - str_replace:
123               template: |
124                 #!/bin/bash
125                 mariadb_do_major_upgrade='MYSQL_MAJOR_UPGRADE'
126               params:
127                 MYSQL_MAJOR_UPGRADE: {get_param: MySqlMajorUpgrade}
128           - get_file: pacemaker_common_functions.sh
129           - get_file: major_upgrade_check.sh
130           - get_file: major_upgrade_pacemaker_migrations.sh
131           - get_file: major_upgrade_controller_pacemaker_2.sh
132
133   ControllerPacemakerUpgradeDeployment_Step2:
134     type: OS::Heat::SoftwareDeploymentGroup
135     depends_on: BlockStorageUpgradeDeployment
136     properties:
137       servers:  {get_param: [servers, Controller]}
138       config: {get_resource: ControllerPacemakerUpgradeConfig_Step2}
139       input_values: {get_param: input_values}
140
141   ControllerPacemakerUpgradeConfig_Step3:
142     type: OS::Heat::SoftwareConfig
143     properties:
144       group: script
145       config:
146         list_join:
147         - ''
148         - - get_file: pacemaker_common_functions.sh
149           - get_file: major_upgrade_pacemaker_migrations.sh
150           - get_file: major_upgrade_controller_pacemaker_3.sh
151
152   ControllerPacemakerUpgradeDeployment_Step3:
153     type: OS::Heat::SoftwareDeploymentGroup
154     depends_on: ControllerPacemakerUpgradeDeployment_Step2
155     properties:
156       servers:  {get_param: [servers, Controller]}
157       config: {get_resource: ControllerPacemakerUpgradeConfig_Step3}
158       input_values: {get_param: input_values}
159
160   ControllerPacemakerUpgradeConfig_Step4:
161     type: OS::Heat::SoftwareConfig
162     properties:
163       group: script
164       config:
165         list_join:
166         - ''
167         - - get_file: pacemaker_common_functions.sh
168           - get_file: major_upgrade_pacemaker_migrations.sh
169           - get_file: major_upgrade_controller_pacemaker_4.sh
170
171   ControllerPacemakerUpgradeDeployment_Step4:
172     type: OS::Heat::SoftwareDeploymentGroup
173     depends_on: ControllerPacemakerUpgradeDeployment_Step3
174     properties:
175       servers:  {get_param: [servers, Controller]}
176       config: {get_resource: ControllerPacemakerUpgradeConfig_Step4}
177       input_values: {get_param: input_values}
178
179   ControllerPacemakerUpgradeConfig_Step5:
180     type: OS::Heat::SoftwareConfig
181     properties:
182       group: script
183       config:
184         list_join:
185         - ''
186         - - get_file: pacemaker_common_functions.sh
187           - get_file: major_upgrade_pacemaker_migrations.sh
188           - get_file: major_upgrade_controller_pacemaker_5.sh
189
190   ControllerPacemakerUpgradeDeployment_Step5:
191     type: OS::Heat::SoftwareDeploymentGroup
192     depends_on: ControllerPacemakerUpgradeDeployment_Step4
193     properties:
194       servers:  {get_param: [servers, Controller]}
195       config: {get_resource: ControllerPacemakerUpgradeConfig_Step5}
196       input_values: {get_param: input_values}
197
198   ControllerPacemakerUpgradeConfig_Step6:
199     type: OS::Heat::SoftwareConfig
200     properties:
201       group: script
202       config:
203         list_join:
204         - ''
205         - - str_replace:
206               template: |
207                 #!/bin/bash
208                 keep_sahara_services_on_upgrade='KEEP_SAHARA_SERVICES_ON_UPGRADE'
209               params:
210                 KEEP_SAHARA_SERVICES_ON_UPGRADE: {get_param: KeepSaharaServicesOnUpgrade}
211           - get_file: pacemaker_common_functions.sh
212           - get_file: major_upgrade_pacemaker_migrations.sh
213           - get_file: major_upgrade_controller_pacemaker_6.sh
214
215   ControllerPacemakerUpgradeDeployment_Step6:
216     type: OS::Heat::SoftwareDeploymentGroup
217     depends_on: ControllerPacemakerUpgradeDeployment_Step5
218     properties:
219       servers:  {get_param: [servers, Controller]}
220       config: {get_resource: ControllerPacemakerUpgradeConfig_Step6}
221       input_values: {get_param: input_values}