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