1 {% set enabled_roles = roles|rejectattr('disable_upgrade_deployment')|list -%}
2 {% set batch_upgrade_steps_max = 3 -%}
3 {% set upgrade_steps_max = 6 -%}
4 {% set deliver_script = {'deliver': False} -%}
5 heat_template_version: ocata
6 description: 'Upgrade steps for all roles'
14 description: Mapping of Role name e.g Controller to the per-role data
19 Setting to a previously unused value during stack-update will trigger
20 the Upgrade resources to re-run on all roles.
23 description: Mapping of service endpoint -> protocol. Typically set
24 via parameter_defaults in the resource registry.
29 description: Keystone region for endpoint
31 description: The password for the nova service and db account, used by nova-api.
38 {% for role in roles if role.disable_upgrade_deployment|default(false) %}
39 {{role.name}}DeliverUpgradeScriptConfig:
40 type: OS::Heat::SoftwareConfig
48 - "if hiera -c /etc/puppet/hiera.yaml service_names | grep nova_compute ; then\n\n"
49 - " crudini --set /etc/nova/nova.conf placement auth_type password\n\n"
50 - " crudini --set /etc/nova/nova.conf placement username placement\n\n"
51 - " crudini --set /etc/nova/nova.conf placement project_domain_name Default\n\n"
52 - " crudini --set /etc/nova/nova.conf placement user_domain_name Default\n\n"
53 - " crudini --set /etc/nova/nova.conf placement project_name service\n\n"
54 - " crudini --set /etc/nova/nova.conf placement os_interface internal\n\n"
57 crudini --set /etc/nova/nova.conf placement password 'SERVICE_PASSWORD'
58 crudini --set /etc/nova/nova.conf placement os_region_name 'REGION_NAME'
59 crudini --set /etc/nova/nova.conf placement auth_url 'AUTH_URL'
61 SERVICE_PASSWORD: { get_param: NovaPassword }
62 REGION_NAME: { get_param: KeystoneRegion }
63 AUTH_URL: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix]}
64 - " systemctl restart openstack-nova-compute\n\n"
70 ROLE_NAME: {{role.name}}
71 - get_file: ../extraconfig/tasks/pacemaker_common_functions.sh
72 - get_file: ../extraconfig/tasks/run_puppet.sh
73 - get_file: ../extraconfig/tasks/tripleo_upgrade_node.sh
75 {{role.name}}DeliverUpgradeScriptDeployment:
76 type: OS::Heat::SoftwareDeploymentGroup
78 servers: {get_param: [servers, {{role.name}}]}
79 config: {get_resource: {{role.name}}DeliverUpgradeScriptConfig}
82 # Upgrade Steps for all roles, batched updates
83 # The UpgradeConfig resources could actually be created without
84 # serialization, but the event output is easier to follow if we
85 # do, and there should be minimal performance hit (creating the
86 # config is cheap compared to the time to apply the deployment).
87 {% for step in range(0, batch_upgrade_steps_max) %}
88 # Batch config resources step {{step}}
89 {%- for role in roles %}
90 {{role.name}}UpgradeBatchConfig_Step{{step}}:
91 type: OS::TripleO::UpgradeConfig
93 {%- if role in enabled_roles %}
95 - {{role.name}}UpgradeBatch_Step{{step -1}}
98 {% for role in roles if role.disable_upgrade_deployment|default(false) %}
99 {% if deliver_script.update({'deliver': True}) %} {% endif %}
101 {% if deliver_script.deliver %}
104 {% for dep in roles if dep.disable_upgrade_deployment|default(false) %}
105 - {{dep.name}}DeliverUpgradeScriptDeployment
109 UpgradeStepConfig: {get_param: [role_data, {{role.name}}, upgrade_batch_tasks]}
113 # Batch deployment resources for step {{step}} (only for enabled roles)
114 {%- for role in enabled_roles %}
115 {{role.name}}UpgradeBatch_Step{{step}}:
116 type: OS::Heat::SoftwareDeploymentGroup
119 {%- for role_inside in enabled_roles %}
120 - {{role_inside.name}}UpgradeBatch_Step{{step -1}}
125 max_batch_size: {{role.upgrade_batch_size|default(1)}}
127 max_batch_size: {{role.upgrade_batch_size|default(1)}}
129 name: {{role.name}}UpgradeBatch_Step{{step}}
130 servers: {get_param: [servers, {{role.name}}]}
131 config: {get_resource: {{role.name}}UpgradeBatchConfig_Step{{step}}}
134 update_identifier: {get_param: UpdateIdentifier}
138 # Dump the puppet manifests to be apply later when disable_upgrade_deployment
140 {% for role in roles if role.disable_upgrade_deployment|default(false) %}
141 {{role.name}}DeliverPuppetConfig:
142 type: OS::Heat::SoftwareConfig
151 cat > /root/{{role.name}}_puppet_config.pp << ENDOFCAT
155 PUPPET_CLASSES: {get_param: [role_data, {{role.name}}, step_config]}
157 {{role.name}}DeliverPuppetDeployment:
158 type: OS::Heat::SoftwareDeploymentGroup
160 servers: {get_param: [servers, {{role.name}}]}
161 config: {get_resource: {{role.name}}DeliverPuppetConfig}
164 # Upgrade Steps for all roles
165 {%- for step in range(0, upgrade_steps_max) %}
166 # Config resources for step {{step}}
167 {%- for role in roles %}
168 {{role.name}}UpgradeConfig_Step{{step}}:
169 type: OS::TripleO::UpgradeConfig
170 # The UpgradeConfig resources could actually be created without
171 # serialization, but the event output is easier to follow if we
172 # do, and there should be minimal performance hit (creating the
173 # config is cheap compared to the time to apply the deployment).
175 {%- if role in enabled_roles %}
177 - {{role.name}}Upgrade_Step{{step -1}}
181 UpgradeStepConfig: {get_param: [role_data, {{role.name}}, upgrade_tasks]}
185 # Deployment resources for step {{step}} (only for enabled roles)
186 {%- for role in enabled_roles %}
187 {{role.name}}Upgrade_Step{{step}}:
188 type: OS::Heat::SoftwareDeploymentGroup
190 # Make sure we wait that all roles have finished their own
191 # previous step before going to the next, so we can guarantee
192 # state for each steps.
194 {%- for role_inside in enabled_roles %}
195 - {{role_inside.name}}Upgrade_Step{{step -1}}
199 {%- for role_inside in enabled_roles %}
200 - {{role_inside.name}}UpgradeBatch_Step{{batch_upgrade_steps_max -1}}
204 name: {{role.name}}Upgrade_Step{{step}}
205 servers: {get_param: [servers, {{role.name}}]}
206 config: {get_resource: {{role.name}}UpgradeConfig_Step{{step}}}
209 update_identifier: {get_param: UpdateIdentifier}
213 # Post upgrade deployment steps for all roles
214 # This runs the normal configuration (e.g puppet) steps unless upgrade
215 # is disabled for the role
216 AllNodesPostUpgradeSteps:
217 type: OS::TripleO::PostUpgradeSteps
219 {%- for dep in enabled_roles %}
220 - {{dep.name}}Upgrade_Step{{upgrade_steps_max - 1}}
223 servers: {get_param: servers}
224 role_data: {get_param: role_data}
227 # Output the config for each role, just use Step1 as the config should be
228 # the same for all steps (only the tag provided differs)
230 description: The per-role upgrade configuration used
232 {% for role in roles %}
233 {{role.name.lower()}}: {get_attr: [{{role.name}}UpgradeConfig_Step1, upgrade_config]}