Merge "HPELeftHandISCSIDriver support for Cinder"
[apex-tripleo-heat-templates.git] / docker / post.j2.yaml
1 heat_template_version: ocata
2
3 description: >
4   Post-deploy configuration steps via puppet for all roles,
5   as defined in ../roles_data.yaml
6
7 parameters:
8   servers:
9     type: json
10     description: Mapping of Role name e.g Controller to a list of servers
11
12   role_data:
13     type: json
14     description: Mapping of Role name e.g Controller to the per-role data
15
16   DeployIdentifier:
17     default: ''
18     type: string
19     description: >
20       Setting this to a unique value will re-run any deployment tasks which
21       perform configuration on a Heat stack-update.
22
23   DockerNamespace:
24     description: namespace
25     default: 'tripleoupstream'
26     type: string
27
28   LibvirtConfig:
29     type: string
30     default: "/etc/libvirt/libvirtd.conf"
31
32   NovaConfig:
33     type: string
34     default: "/etc/nova/nova.conf,/etc/nova/rootwrap.conf"
35
36   NeutronOpenvswitchAgentConfig:
37     type: string
38     default: "/etc/neutron/neutron.conf,/etc/neutron/plugins/ml2/openvswitch_agent.ini"
39
40 resources:
41
42 {% for role in roles %}
43   # Post deployment steps for all roles
44   # A single config is re-applied with an incrementing step number
45   # {{role.name}} Role steps
46   {{role.name}}ArtifactsConfig:
47     type: ../puppet/deploy-artifacts.yaml
48
49   {{role.name}}ArtifactsDeploy:
50     type: OS::Heat::StructuredDeploymentGroup
51     properties:
52       servers:  {get_param: [servers, {{role.name}}]}
53       config: {get_resource: {{role.name}}ArtifactsConfig}
54
55   {{role.name}}PreConfig:
56     type: OS::TripleO::Tasks::{{role.name}}PreConfig
57     properties:
58       servers: {get_param: [servers, {{role.name}}]}
59       input_values:
60         update_identifier: {get_param: DeployIdentifier}
61
62   {{role.name}}Config:
63     type: OS::TripleO::{{role.name}}Config
64     properties:
65       StepConfig: {get_param: [role_data, {{role.name}}, step_config]}
66   {% if role.name.lower() == 'compute' %}
67       PuppetTags: {get_param: [role_data, {{role.name}}, puppet_tags]}
68   {% endif %}
69
70   # Step through a series of configuration steps
71   {{role.name}}Deployment_Step1:
72     type: OS::Heat::StructuredDeploymentGroup
73     depends_on: [{{role.name}}PreConfig, {{role.name}}ArtifactsDeploy]
74     properties:
75       name: {{role.name}}Deployment_Step1
76       servers: {get_param: [servers, {{role.name}}]}
77       config: {get_resource: {{role.name}}Config}
78       input_values:
79         step: 1
80         update_identifier: {get_param: DeployIdentifier}
81
82   {{role.name}}Deployment_Step2:
83     type: OS::Heat::StructuredDeploymentGroup
84     depends_on:
85   {% for dep in roles %}
86       - {{dep.name}}Deployment_Step1
87   {% endfor %}
88     properties:
89       name: {{role.name}}Deployment_Step2
90       servers: {get_param: [servers, {{role.name}}]}
91       config: {get_resource: {{role.name}}Config}
92       input_values:
93         step: 2
94         update_identifier: {get_param: DeployIdentifier}
95
96   {{role.name}}Deployment_Step3:
97     type: OS::Heat::StructuredDeploymentGroup
98     depends_on:
99   {% for dep in roles %}
100       - {{dep.name}}Deployment_Step2
101   {% endfor %}
102     properties:
103       name: {{role.name}}Deployment_Step3
104       servers: {get_param: [servers, {{role.name}}]}
105       config: {get_resource: {{role.name}}Config}
106       input_values:
107         step: 3
108         update_identifier: {get_param: DeployIdentifier}
109
110   {{role.name}}Deployment_Step4:
111     type: OS::Heat::StructuredDeploymentGroup
112     depends_on:
113   {% for dep in roles %}
114       - {{dep.name}}Deployment_Step3
115   {% endfor %}
116     properties:
117       name: {{role.name}}Deployment_Step4
118       servers: {get_param: [servers, {{role.name}}]}
119       config: {get_resource: {{role.name}}Config}
120       input_values:
121         step: 4
122         update_identifier: {get_param: DeployIdentifier}
123
124   {{role.name}}Deployment_Step5:
125     type: OS::Heat::StructuredDeploymentGroup
126     depends_on:
127   {% for dep in roles %}
128       - {{dep.name}}Deployment_Step4
129   {% endfor %}
130     properties:
131       name: {{role.name}}Deployment_Step5
132       servers: {get_param: [servers, {{role.name}}]}
133       config: {get_resource: {{role.name}}Config}
134       input_values:
135         step: 5
136         update_identifier: {get_param: DeployIdentifier}
137
138   {{role.name}}PostConfig:
139     type: OS::TripleO::Tasks::{{role.name}}PostConfig
140     depends_on:
141   {% for dep in roles %}
142       - {{dep.name}}Deployment_Step5
143   {% endfor %}
144     properties:
145       servers:  {get_param: servers}
146       input_values:
147         update_identifier: {get_param: DeployIdentifier}
148
149   # Note, this should come last, so use depends_on to ensure
150   # this is created after any other resources.
151   {{role.name}}ExtraConfigPost:
152     depends_on:
153   {% for dep in roles %}
154       - {{dep.name}}PostConfig
155   {% endfor %}
156     type: OS::TripleO::NodeExtraConfigPost
157     properties:
158         servers: {get_param: [servers, {{role.name}}]}
159
160   {% if role.name.lower() == 'compute' %}
161   CopyEtcConfig:
162     type: OS::Heat::SoftwareConfig
163     depends_on: {{role.name}}PostConfig
164     properties:
165       group: script
166       outputs:
167         - name: result
168       config: {get_file: ../docker/copy-etc.sh}
169
170   CopyEtcDeployment:
171     type: OS::Heat::SoftwareDeploymentGroup
172     properties:
173       name: CopyEtcDeployment
174       servers: {get_param: [servers, {{role.name}}]}
175       config: {get_resource: CopyEtcConfig}
176
177   CopyJsonConfig:
178     type: OS::Heat::SoftwareConfig
179     properties:
180       group: script
181       inputs:
182       - name: libvirt_config
183       - name: nova_config
184       - name: neutron_openvswitch_agent_config
185       config: {get_file: ../docker/copy-json.py}
186
187   CopyJsonDeployment:
188     type: OS::Heat::SoftwareDeploymentGroup
189     depends_on: CopyEtcDeployment
190     properties:
191       name: CopyJsonDeployment
192       config: {get_resource: CopyJsonConfig}
193       servers: {get_param: [servers, {{role.name}}]}
194       input_values:
195         libvirt_config: {get_param: LibvirtConfig}
196         nova_config: {get_param: NovaConfig}
197         neutron_openvswitch_agent_config: {get_param: NeutronOpenvswitchAgentConfig}
198
199   {{role.name}}ContainersConfig_Step1:
200     type: OS::Heat::StructuredConfig
201     depends_on: CopyJsonDeployment
202     properties:
203       group: docker-cmd
204       config:
205         {get_param: [role_data, {{role.name}}, docker_config, step_1]}
206
207   {{role.name}}ContainersConfig_Step2:
208     type: OS::Heat::StructuredConfig
209     depends_on: CopyJsonDeployment
210     properties:
211       group: docker-cmd
212       config:
213         {get_param: [role_data, {{role.name}}, docker_config, step_2]}
214
215   {{role.name}}ContainersDeployment_Step1:
216     type: OS::Heat::StructuredDeploymentGroup
217     depends_on: [{{role.name}}PreConfig, {{role.name}}ArtifactsDeploy]
218     properties:
219       name: {{role.name}}ContainersDeployment_Step1
220       servers: {get_param: [servers, {{role.name}}]}
221       config: {get_resource: {{role.name}}ContainersConfig_Step1}
222
223   {{role.name}}ContainersDeployment_Step2:
224     type: OS::Heat::StructuredDeploymentGroup
225     depends_on: {{role.name}}ContainersDeployment_Step1
226     properties:
227       name: {{role.name}}ContainersDeployment_Step2
228       servers: {get_param: [servers, {{role.name}}]}
229       config: {get_resource: {{role.name}}ContainersConfig_Step2}
230   {% endif %}
231 {% endfor %}