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.
36 # Conditions to disable any steps where the task list is empty
37 {%- for role in roles %}
38 {{role.name}}UpgradeBatchConfigEnabled:
41 - {get_param: [role_data, {{role.name}}, upgrade_batch_tasks]}
43 {{role.name}}UpgradeConfigEnabled:
46 - {get_param: [role_data, {{role.name}}, upgrade_tasks]}
52 {% for role in roles if role.disable_upgrade_deployment|default(false) %}
53 {{role.name}}DeliverUpgradeScriptConfig:
54 type: OS::Heat::SoftwareConfig
62 - "if hiera -c /etc/puppet/hiera.yaml service_names | grep nova_compute ; then\n\n"
63 - " crudini --set /etc/nova/nova.conf placement auth_type password\n\n"
64 - " crudini --set /etc/nova/nova.conf placement username placement\n\n"
65 - " crudini --set /etc/nova/nova.conf placement project_domain_name Default\n\n"
66 - " crudini --set /etc/nova/nova.conf placement user_domain_name Default\n\n"
67 - " crudini --set /etc/nova/nova.conf placement project_name service\n\n"
68 - " systemctl restart openstack-nova-compute\n\n"
72 crudini --set /etc/nova/nova.conf placement password 'SERVICE_PASSWORD'
73 crudini --set /etc/nova/nova.conf placement region_name 'REGION_NAME'
74 crudini --set /etc/nova/nova.conf placement auth_url 'AUTH_URL'
76 SERVICE_PASSWORD: { get_param: NovaPassword }
77 REGION_NAME: { get_param: KeystoneRegion }
78 AUTH_URL: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix]}
79 - get_file: ../extraconfig/tasks/pacemaker_common_functions.sh
80 - get_file: ../extraconfig/tasks/tripleo_upgrade_node.sh
82 {{role.name}}DeliverUpgradeScriptDeployment:
83 type: OS::Heat::SoftwareDeploymentGroup
85 servers: {get_param: [servers, {{role.name}}]}
86 config: {get_resource: {{role.name}}DeliverUpgradeScriptConfig}
89 # Upgrade Steps for all roles, batched updates
90 # The UpgradeConfig resources could actually be created without
91 # serialization, but the event output is easier to follow if we
92 # do, and there should be minimal performance hit (creating the
93 # config is cheap compared to the time to apply the deployment).
94 {% for step in range(0, batch_upgrade_steps_max) %}
95 # Batch config resources step {{step}}
96 {%- for role in roles %}
97 {{role.name}}UpgradeBatchConfig_Step{{step}}:
98 type: OS::TripleO::UpgradeConfig
100 condition: {{role.name}}UpgradeBatchConfigEnabled
101 {% if role.name in enabled_roles %}
103 - {{role.name}}UpgradeBatch_Step{{step -1}}
106 {% for role in roles if role.disable_upgrade_deployment|default(false) %}
107 {% if deliver_script.update({'deliver': True}) %} {% endif %}
109 {% if deliver_script.deliver %}
112 {% for dep in roles if dep.disable_upgrade_deployment|default(false) %}
113 - {{dep.name}}DeliverUpgradeScriptDeployment
117 UpgradeStepConfig: {get_param: [role_data, {{role.name}}, upgrade_batch_tasks]}
121 # Batch deployment resources for step {{step}} (only for enabled roles)
122 {%- for role in enabled_roles %}
123 {{role.name}}UpgradeBatch_Step{{step}}:
124 type: OS::Heat::SoftwareDeploymentGroup
125 condition: {{role.name}}UpgradeBatchConfigEnabled
128 - {{role.name}}UpgradeBatch_Step{{step -1}}
131 - {{role.name}}UpgradeBatchConfig_Step{{step}}
135 max_batch_size: {{role.upgrade_batch_size|default(1)}}
137 max_batch_size: {{role.upgrade_batch_size|default(1)}}
139 name: {{role.name}}UpgradeBatch_Step{{step}}
140 servers: {get_param: [servers, {{role.name}}]}
141 config: {get_resource: {{role.name}}UpgradeBatchConfig_Step{{step}}}
144 update_identifier: {get_param: UpdateIdentifier}
148 # Upgrade Steps for all roles
149 {%- for step in range(0, upgrade_steps_max) %}
150 # Config resources for step {{step}}
151 {%- for role in roles %}
152 {{role.name}}UpgradeConfig_Step{{step}}:
153 type: OS::TripleO::UpgradeConfig
154 # The UpgradeConfig resources could actually be created without
155 # serialization, but the event output is easier to follow if we
156 # do, and there should be minimal performance hit (creating the
157 # config is cheap compared to the time to apply the deployment).
159 condition: {{role.name}}UpgradeConfigEnabled
160 {% if role.name in enabled_roles %}
162 - {{role.name}}Upgrade_Step{{step -1}}
166 UpgradeStepConfig: {get_param: [role_data, {{role.name}}, upgrade_tasks]}
170 # Deployment resources for step {{step}} (only for enabled roles)
171 {%- for role in enabled_roles %}
172 {{role.name}}Upgrade_Step{{step}}:
173 type: OS::Heat::SoftwareDeploymentGroup
175 condition: {{role.name}}UpgradeConfigEnabled
177 - {{role.name}}Upgrade_Step{{step -1}}
180 name: {{role.name}}Upgrade_Step{{step}}
181 servers: {get_param: [servers, {{role.name}}]}
182 config: {get_resource: {{role.name}}UpgradeConfig_Step{{step}}}
185 update_identifier: {get_param: UpdateIdentifier}
189 # Post upgrade deployment steps for all roles
190 # This runs the normal configuration (e.g puppet) steps unless upgrade
191 # is disabled for the role
192 AllNodesPostUpgradeSteps:
193 type: OS::TripleO::PostUpgradeSteps
195 {%- for dep in enabled_roles %}
196 - {{dep.name}}Upgrade_Step{{upgrade_steps_max - 1}}
199 servers: {get_param: servers}
200 role_data: {get_param: role_data}
203 # Output the config for each role, just use Step1 as the config should be
204 # the same for all steps (only the tag provided differs)
206 description: The per-role upgrade configuration used
208 {% for role in roles %}
209 {{role.name.lower()}}: {get_attr: [{{role.name}}UpgradeConfig_Step1, upgrade_config]}