Bump template version for all templates to "ocata"
[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   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   {{role.name}}ContainersConfig_Step1:
256     type: OS::Heat::StructuredConfig
257     depends_on: CopyJsonDeployment
258     properties:
259       group: docker-cmd
260       config:
261         {get_param: [role_data, {{role.name}}, docker_config, step_1]}
262
263   {{role.name}}ContainersConfig_Step2:
264     type: OS::Heat::StructuredConfig
265     depends_on: CopyJsonDeployment
266     properties:
267       group: docker-cmd
268       config:
269         {get_param: [role_data, {{role.name}}, docker_config, step_2]}
270
271   {{role.name}}ContainersDeployment_Step1:
272     type: OS::Heat::StructuredDeploymentGroup
273     depends_on: [{{role.name}}PreConfig, {{role.name}}ArtifactsDeploy]
274     properties:
275       name: {{role.name}}ContainersDeployment_Step1
276       servers: {get_param: [servers, {{role.name}}]}
277       config: {get_resource: {{role.name}}ContainersConfig_Step1}
278
279   {{role.name}}ContainersDeployment_Step2:
280     type: OS::Heat::StructuredDeploymentGroup
281     depends_on: {{role.name}}ContainersDeployment_Step1
282     properties:
283       name: {{role.name}}ContainersDeployment_Step2
284       servers: {get_param: [servers, {{role.name}}]}
285       config: {get_resource: {{role.name}}ContainersConfig_Step2}
286   {% endif %}
287 {% endfor %}