a175a42385874cc2f1d3205be0792d1f49dcad36
[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:
101         list_join:
102         - ''
103         - - get_file: pacemaker_common_functions.sh
104           - get_file: major_upgrade_block_storage.sh
105
106   BlockStorageUpgradeDeployment:
107     type: OS::Heat::SoftwareDeploymentGroup
108     properties:
109       servers:  {get_param: [servers, BlockStorage]}
110       config: {get_resource: BlockStorageUpgradeConfig}
111       input_values: {get_param: input_values}
112
113   ControllerPacemakerUpgradeConfig_Step2:
114     type: OS::Heat::SoftwareConfig
115     properties:
116       group: script
117       config:
118         list_join:
119         - ''
120         - - str_replace:
121               template: |
122                 #!/bin/bash
123                 upgrade_level_nova_compute='UPGRADE_LEVEL_NOVA_COMPUTE'
124               params:
125                 UPGRADE_LEVEL_NOVA_COMPUTE: {get_param: UpgradeLevelNovaCompute}
126           - str_replace:
127               template: |
128                 #!/bin/bash
129                 mariadb_do_major_upgrade='MYSQL_MAJOR_UPGRADE'
130               params:
131                 MYSQL_MAJOR_UPGRADE: {get_param: MySqlMajorUpgrade}
132           - get_file: pacemaker_common_functions.sh
133           - get_file: major_upgrade_check.sh
134           - get_file: major_upgrade_pacemaker_migrations.sh
135           - get_file: major_upgrade_controller_pacemaker_2.sh
136
137   ControllerPacemakerUpgradeDeployment_Step2:
138     type: OS::Heat::SoftwareDeploymentGroup
139     depends_on: BlockStorageUpgradeDeployment
140     properties:
141       servers:  {get_param: [servers, Controller]}
142       config: {get_resource: ControllerPacemakerUpgradeConfig_Step2}
143       input_values: {get_param: input_values}
144
145   ControllerPacemakerUpgradeConfig_Step3:
146     type: OS::Heat::SoftwareConfig
147     properties:
148       group: script
149       config:
150         list_join:
151         - ''
152         - - get_file: pacemaker_common_functions.sh
153           - get_file: major_upgrade_pacemaker_migrations.sh
154           - get_file: major_upgrade_controller_pacemaker_3.sh
155
156   ControllerPacemakerUpgradeDeployment_Step3:
157     type: OS::Heat::SoftwareDeploymentGroup
158     depends_on: ControllerPacemakerUpgradeDeployment_Step2
159     properties:
160       servers:  {get_param: [servers, Controller]}
161       config: {get_resource: ControllerPacemakerUpgradeConfig_Step3}
162       input_values: {get_param: input_values}
163
164   ControllerPacemakerUpgradeConfig_Step4:
165     type: OS::Heat::SoftwareConfig
166     properties:
167       group: script
168       config:
169         list_join:
170         - ''
171         - - get_file: pacemaker_common_functions.sh
172           - get_file: major_upgrade_pacemaker_migrations.sh
173           - get_file: major_upgrade_controller_pacemaker_4.sh
174
175   ControllerPacemakerUpgradeDeployment_Step4:
176     type: OS::Heat::SoftwareDeploymentGroup
177     depends_on: ControllerPacemakerUpgradeDeployment_Step3
178     properties:
179       servers:  {get_param: [servers, Controller]}
180       config: {get_resource: ControllerPacemakerUpgradeConfig_Step4}
181       input_values: {get_param: input_values}
182
183   ControllerPacemakerUpgradeConfig_Step5:
184     type: OS::Heat::SoftwareConfig
185     properties:
186       group: script
187       config:
188         list_join:
189         - ''
190         - - get_file: pacemaker_common_functions.sh
191           - get_file: major_upgrade_pacemaker_migrations.sh
192           - get_file: major_upgrade_controller_pacemaker_5.sh
193
194   ControllerPacemakerUpgradeDeployment_Step5:
195     type: OS::Heat::SoftwareDeploymentGroup
196     depends_on: ControllerPacemakerUpgradeDeployment_Step4
197     properties:
198       servers:  {get_param: [servers, Controller]}
199       config: {get_resource: ControllerPacemakerUpgradeConfig_Step5}
200       input_values: {get_param: input_values}
201
202   ControllerPacemakerUpgradeConfig_Step6:
203     type: OS::Heat::SoftwareConfig
204     properties:
205       group: script
206       config:
207         list_join:
208         - ''
209         - - str_replace:
210               template: |
211                 #!/bin/bash
212                 keep_sahara_services_on_upgrade='KEEP_SAHARA_SERVICES_ON_UPGRADE'
213               params:
214                 KEEP_SAHARA_SERVICES_ON_UPGRADE: {get_param: KeepSaharaServicesOnUpgrade}
215           - get_file: pacemaker_common_functions.sh
216           - get_file: major_upgrade_pacemaker_migrations.sh
217           - get_file: major_upgrade_controller_pacemaker_6.sh
218
219   ControllerPacemakerUpgradeDeployment_Step6:
220     type: OS::Heat::SoftwareDeploymentGroup
221     depends_on: ControllerPacemakerUpgradeDeployment_Step5
222     properties:
223       servers:  {get_param: [servers, Controller]}
224       config: {get_resource: ControllerPacemakerUpgradeConfig_Step6}
225       input_values: {get_param: input_values}