Deployed server: switch to apply-config hook
[apex-tripleo-heat-templates.git] / docker / post.j2.yaml
1 heat_template_version: 2016-10-14
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   DockerOpenvswitchDBImage:
29     description: image
30     default: 'centos-binary-openvswitch-db-server'
31     type: string
32
33   DockerOvsVswitchdImage:
34     description: image
35     default: 'centos-binary-openvswitch-vswitchd'
36     type: string
37
38   LibvirtConfig:
39     type: string
40     default: "/etc/libvirt/libvirtd.conf"
41
42   NovaConfig:
43     type: string
44     default: "/etc/nova/nova.conf,/etc/nova/rootwrap.conf"
45
46   NeutronOpenvswitchAgentConfig:
47     type: string
48     default: "/etc/neutron/neutron.conf,/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini"
49
50 resources:
51
52 {% for role in roles %}
53   # Post deployment steps for all roles
54   # A single config is re-applied with an incrementing step number
55   # {{role.name}} Role steps
56   {{role.name}}ArtifactsConfig:
57     type: ../puppet/deploy-artifacts.yaml
58
59   {{role.name}}ArtifactsDeploy:
60     type: OS::Heat::StructuredDeploymentGroup
61     properties:
62       servers:  {get_param: [servers, {{role.name}}]}
63       config: {get_resource: {{role.name}}ArtifactsConfig}
64
65   {{role.name}}PreConfig:
66     type: OS::TripleO::Tasks::{{role.name}}PreConfig
67     properties:
68       servers: {get_param: [servers, {{role.name}}]}
69       input_values:
70         update_identifier: {get_param: DeployIdentifier}
71
72   {{role.name}}Config:
73     type: OS::TripleO::{{role.name}}Config
74     properties:
75       StepConfig: {get_param: [role_data, {{role.name}}, step_config]}
76   {% if role.name.lower() == 'compute' %}
77       PuppetTags: {get_param: [role_data, {{role.name}}, puppet_tags]}
78   {% endif %}
79
80   # Step through a series of configuration steps
81   {{role.name}}Deployment_Step1:
82     type: OS::Heat::StructuredDeploymentGroup
83     depends_on: [{{role.name}}PreConfig, {{role.name}}ArtifactsDeploy]
84     properties:
85       name: {{role.name}}Deployment_Step1
86       servers: {get_param: [servers, {{role.name}}]}
87       config: {get_resource: {{role.name}}Config}
88       input_values:
89         step: 1
90         update_identifier: {get_param: DeployIdentifier}
91
92   {{role.name}}Deployment_Step2:
93     type: OS::Heat::StructuredDeploymentGroup
94     depends_on:
95   {% for dep in roles %}
96       - {{dep.name}}Deployment_Step1
97   {% endfor %}
98     properties:
99       name: {{role.name}}Deployment_Step2
100       servers: {get_param: [servers, {{role.name}}]}
101       config: {get_resource: {{role.name}}Config}
102       input_values:
103         step: 2
104         update_identifier: {get_param: DeployIdentifier}
105
106   {{role.name}}Deployment_Step3:
107     type: OS::Heat::StructuredDeploymentGroup
108     depends_on:
109   {% for dep in roles %}
110       - {{dep.name}}Deployment_Step2
111   {% endfor %}
112     properties:
113       name: {{role.name}}Deployment_Step3
114       servers: {get_param: [servers, {{role.name}}]}
115       config: {get_resource: {{role.name}}Config}
116       input_values:
117         step: 3
118         update_identifier: {get_param: DeployIdentifier}
119
120   {{role.name}}Deployment_Step4:
121     type: OS::Heat::StructuredDeploymentGroup
122     depends_on:
123   {% for dep in roles %}
124       - {{dep.name}}Deployment_Step3
125   {% endfor %}
126     properties:
127       name: {{role.name}}Deployment_Step4
128       servers: {get_param: [servers, {{role.name}}]}
129       config: {get_resource: {{role.name}}Config}
130       input_values:
131         step: 4
132         update_identifier: {get_param: DeployIdentifier}
133
134   {{role.name}}Deployment_Step5:
135     type: OS::Heat::StructuredDeploymentGroup
136     depends_on:
137   {% for dep in roles %}
138       - {{dep.name}}Deployment_Step4
139   {% endfor %}
140     properties:
141       name: {{role.name}}Deployment_Step5
142       servers: {get_param: [servers, {{role.name}}]}
143       config: {get_resource: {{role.name}}Config}
144       input_values:
145         step: 5
146         update_identifier: {get_param: DeployIdentifier}
147
148   {{role.name}}PostConfig:
149     type: OS::TripleO::Tasks::{{role.name}}PostConfig
150     depends_on:
151   {% for dep in roles %}
152       - {{dep.name}}Deployment_Step5
153   {% endfor %}
154     properties:
155       servers:  {get_param: servers}
156       input_values:
157         update_identifier: {get_param: DeployIdentifier}
158
159   # Note, this should come last, so use depends_on to ensure
160   # this is created after any other resources.
161   {{role.name}}ExtraConfigPost:
162     depends_on:
163   {% for dep in roles %}
164       - {{dep.name}}PostConfig
165   {% endfor %}
166     type: OS::TripleO::NodeExtraConfigPost
167     properties:
168         servers: {get_param: [servers, {{role.name}}]}
169
170   {% if role.name.lower() == 'compute' %}
171   CopyEtcConfig:
172     type: OS::Heat::SoftwareConfig
173     depends_on: {{role.name}}PostConfig
174     properties:
175       group: script
176       outputs:
177         - name: result
178       config: {get_file: ../docker/copy-etc.sh}
179
180   CopyEtcDeployment:
181     type: OS::Heat::SoftwareDeploymentGroup
182     properties:
183       name: CopyEtcDeployment
184       servers: {get_param: [servers, {{role.name}}]}
185       config: {get_resource: CopyEtcConfig}
186
187   CopyJsonConfig:
188     type: OS::Heat::SoftwareConfig
189     properties:
190       group: script
191       inputs:
192       - name: libvirt_config
193       - name: nova_config
194       - name: neutron_openvswitch_agent_config
195       config: {get_file: ../docker/copy-json.py}
196
197   CopyJsonDeployment:
198     type: OS::Heat::SoftwareDeploymentGroup
199     depends_on: CopyEtcDeployment
200     properties:
201       name: CopyJsonDeployment
202       config: {get_resource: CopyJsonConfig}
203       servers: {get_param: [servers, {{role.name}}]}
204       input_values:
205         libvirt_config: {get_param: LibvirtConfig}
206         nova_config: {get_param: NovaConfig}
207         neutron_openvswitch_agent_config: {get_param: NeutronOpenvswitchAgentConfig}
208
209   NovaComputeContainersDeploymentOVS:
210     type: OS::Heat::StructuredDeploymentGroup
211     depends_on: CopyJsonDeployment
212     properties:
213       name: NovaComputeContainersDeploymentOVS
214       config: {get_resource: NovaComputeContainersConfigOVS}
215       servers: {get_param: [servers, {{role.name}}]}
216
217   NovaComputeContainersConfigOVS:
218     type: OS::Heat::StructuredConfig
219     properties:
220       group: docker-cmd
221       config:
222         openvswitchdb:
223           image:
224             list_join:
225               - '/'
226               - [ {get_param: DockerNamespace}, {get_param: DockerOpenvswitchDBImage} ]
227           net: host
228           restart: always
229           volumes:
230             - /var/lib/etc-data/json-config/ovsdb-server.json:/var/lib/kolla/config_files/config.json
231             - /etc/localtime:/etc/localtime:ro
232             - /run:/run
233             - logs:/var/log/kolla/
234             - openvswitch_db:/var/lib/openvswitch/
235           environment:
236             - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
237
238         ovsvswitchd:
239           image:
240             list_join:
241               - '/'
242               - [ {get_param: DockerNamespace}, {get_param: DockerOvsVswitchdImage} ]
243           net: host
244           privileged: true
245           restart: always
246           volumes:
247             - /var/lib/etc-data/json-config/ovs-vswitchd.json:/var/lib/kolla/config_files/config.json
248             - /etc/localtime:/etc/localtime:ro
249             - /lib/modules:/lib/modules:ro
250             - /run:/run
251             - logs:/var/log/kolla/
252           environment:
253             - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
254
255   NovaComputeContainersDeploymentNetconfig:
256     type: OS::Heat::SoftwareDeploymentGroup
257     depends_on: NovaComputeContainersDeploymentOVS
258     properties:
259       name: NovaComputeContainersDeploymentNetconfig
260       config: {get_resource: NovaComputeContainersConfigNetconfig}
261       servers: {get_param: [servers, {{role.name}}]}
262
263   # We run os-net-config here because we depend on the ovs containers to be up
264   # and running before we configure the network.  This allows explicit timing
265   # of the network configuration.
266   NovaComputeContainersConfigNetconfig:
267     type: OS::Heat::SoftwareConfig
268     properties:
269       group: script
270       outputs:
271       - name: result
272       config: |
273         #!/bin/bash
274         /usr/local/bin/run-os-net-config
275
276   {{role.name}}ContainersConfig_Step1:
277     type: OS::Heat::StructuredConfig
278     depends_on: CopyJsonDeployment
279     properties:
280       group: docker-cmd
281       config:
282         {get_param: [role_data, {{role.name}}, docker_config, step_1]}
283
284   {{role.name}}ContainersConfig_Step2:
285     type: OS::Heat::StructuredConfig
286     depends_on: CopyJsonDeployment
287     properties:
288       group: docker-cmd
289       config:
290         {get_param: [role_data, {{role.name}}, docker_config, step_2]}
291
292   {{role.name}}ContainersDeployment_Step1:
293     type: OS::Heat::StructuredDeploymentGroup
294     depends_on: [{{role.name}}PreConfig, {{role.name}}ArtifactsDeploy, NovaComputeContainersDeploymentNetconfig]
295     properties:
296       name: {{role.name}}ContainersDeployment_Step1
297       servers: {get_param: [servers, {{role.name}}]}
298       config: {get_resource: {{role.name}}ContainersConfig_Step1}
299
300   {{role.name}}ContainersDeployment_Step2:
301     type: OS::Heat::StructuredDeploymentGroup
302     depends_on: {{role.name}}ContainersDeployment_Step1
303     properties:
304       name: {{role.name}}ContainersDeployment_Step2
305       servers: {get_param: [servers, {{role.name}}]}
306       config: {get_resource: {{role.name}}ContainersConfig_Step2}
307   {% endif %}
308 {% endfor %}