Merge "Remove non-containerized pacemaker resources on upgrade"
[apex-tripleo-heat-templates.git] / puppet / puppet-steps.j2
1 {% set deploy_steps_max = 6 %}
2 conditions:
3 {% for step in range(1, deploy_steps_max) %}
4   WorkflowTasks_Step{{step}}_Enabled:
5     or:
6     {%- for role in roles %}
7       - not:
8           equals:
9             - get_param: [role_data, {{role.name}}, service_workflow_tasks, step{{step}}]
10             - ''
11       - False
12     {%- endfor %}
13 {% endfor %}
14
15 resources:
16   # Post deployment steps for all roles
17   # A single config is re-applied with an incrementing step number
18 {% for role in roles %}
19   # {{role.name}} Role post-deploy steps
20   {{role.name}}ArtifactsConfig:
21     type: deploy-artifacts.yaml
22
23   {{role.name}}ArtifactsDeploy:
24     type: OS::Heat::StructuredDeployments
25     properties:
26       servers:  {get_param: [servers, {{role.name}}]}
27       config: {get_resource: {{role.name}}ArtifactsConfig}
28
29   {{role.name}}PreConfig:
30     type: OS::TripleO::Tasks::{{role.name}}PreConfig
31     properties:
32       servers: {get_param: [servers, {{role.name}}]}
33       input_values:
34         update_identifier: {get_param: DeployIdentifier}
35
36   {{role.name}}Config:
37     type: OS::TripleO::{{role.name}}Config
38     properties:
39       StepConfig: {get_param: [role_data, {{role.name}}, step_config]}
40
41   # Step through a series of configuration steps
42 {% for step in range(1, deploy_steps_max) %}
43   {{role.name}}Deployment_Step{{step}}:
44     type: OS::Heat::StructuredDeploymentGroup
45     depends_on:
46       - WorkflowTasks_Step{{step}}_Execution
47     # TODO(gfidente): the following if/else condition
48     # replicates what is already defined for the
49     # WorkflowTasks_StepX resource and can be remove
50     # if https://bugs.launchpad.net/heat/+bug/1700569
51     # is fixed.
52     {%- if step == 1 %}
53     {%- for dep in roles %}
54       - {{dep.name}}PreConfig
55       - {{dep.name}}ArtifactsDeploy
56     {%- endfor %}
57     {%- else %}
58     {%- for dep in roles %}
59       - {{dep.name}}Deployment_Step{{step -1}}
60     {%- endfor %}
61     {%- endif %}
62     properties:
63       name: {{role.name}}Deployment_Step{{step}}
64       servers: {get_param: [servers, {{role.name}}]}
65       config: {get_resource: {{role.name}}Config}
66       input_values:
67         step: {{step}}
68         update_identifier: {get_param: DeployIdentifier}
69 {% endfor %}
70
71   # Note, this should be the last step to execute configuration changes.
72   # Ensure that all {{role.name}}ExtraConfigPost steps are executed
73   # after all the previous deployment steps.
74   {{role.name}}ExtraConfigPost:
75     depends_on:
76   {%- for dep in roles %}
77       - {{dep.name}}Deployment_Step5
78   {%- endfor %}
79     type: OS::TripleO::NodeExtraConfigPost
80     properties:
81         servers: {get_param: [servers, {{role.name}}]}
82
83   # The {{role.name}}PostConfig steps are in charge of
84   # quiescing all services, i.e. in the Controller case,
85   # we should run a full service reload.
86   {{role.name}}PostConfig:
87     type: OS::TripleO::Tasks::{{role.name}}PostConfig
88     depends_on:
89   {%- for dep in roles %}
90       - {{dep.name}}ExtraConfigPost
91   {%- endfor %}
92     properties:
93       servers: {get_param: servers}
94       input_values:
95         update_identifier: {get_param: DeployIdentifier}
96
97
98 {% endfor %}
99
100 # BEGIN service_workflow_tasks handling
101 {% for step in range(1, deploy_steps_max) %}
102   WorkflowTasks_Step{{step}}:
103     type: OS::Mistral::Workflow
104     condition: WorkflowTasks_Step{{step}}_Enabled
105     depends_on:
106     {%- if step == 1 %}
107     {%- for dep in roles %}
108       - {{dep.name}}PreConfig
109       - {{dep.name}}ArtifactsDeploy
110     {%- endfor %}
111     {%- else %}
112     {%- for dep in roles %}
113       - {{dep.name}}Deployment_Step{{step -1}}
114     {%- endfor %}
115     {%- endif %}
116     properties:
117       name: {list_join: [".", ["tripleo", {get_param: stack_name}, "workflowtasks", "step{{step}}"]]}
118       type: direct
119       tasks:
120         yaql:
121           expression: $.data.where($ != '').select($.get('step{{step}}')).where($ != null).flatten()
122           data:
123           {%- for role in roles %}
124             - get_param: [role_data, {{role.name}}, service_workflow_tasks]
125           {%- endfor %}
126
127   WorkflowTasks_Step{{step}}_Execution:
128     type: OS::Mistral::ExternalResource
129     condition: WorkflowTasks_Step{{step}}_Enabled
130     depends_on: WorkflowTasks_Step{{step}}
131     properties:
132       actions:
133         CREATE:
134           workflow: { get_resource: WorkflowTasks_Step{{step}} }
135           params:
136             env:
137               service_ips: { get_param: ctlplane_service_ips }
138               role_merged_configs:
139                 {%- for r in roles %}
140                 {{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
141                 {%- endfor %}
142             evaluate_env: false
143         UPDATE:
144           workflow: { get_resource: WorkflowTasks_Step{{step}} }
145           params:
146             env:
147               service_ips: { get_param: ctlplane_service_ips }
148               role_merged_configs:
149                 {%- for r in roles %}
150                 {{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
151                 {%- endfor %}
152             evaluate_env: false
153       always_update: true
154 {% endfor %}
155 # END service_workflow_tasks handling