blob: 321fabdd6518a0b56f311166424b8eae769df73e [file] [log] [blame]
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +02001heat_template_version: queens
2
3parameters:
4 image:
5 type: string
6 description: Name of image to use for servers
7 public_net_id:
8 type: string
9 default: ''
10 description: >
11 ID of public network for which floating IP addresses will be allocated/
12 for baremetal case flat provision network for nodes
Oleh Hryhorov207137d2021-04-13 12:03:39 +030013 dns_nameservers:
14 type: json
15 default: ['172.18.224.6', '172.18.176.6']
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +020016 lab_network_cidr:
17 type: string
18 default: '10.0.0.0/8'
19 main_network_cidr:
20 type: string
21 default: '10.0.0.0/16'
22 main_control_network_cidr:
23 type: string
24 description: The CIDR of control network, used to detect control interface.
25 default: '10.0.1.0/24'
26 main_tunnel_network_cidr:
27 type: string
28 default: '10.0.2.0/24'
29 main_storage_frontend_network_cidr:
30 type: string
Oleh Hryhorov207137d2021-04-13 12:03:39 +030031 default: '10.12.0.0/24'
32 main_storage_frontend_interface:
33 type: string
34 default: 'ens5'
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +020035 main_storage_backend_network_cidr:
36 type: string
Oleh Hryhorov207137d2021-04-13 12:03:39 +030037 default: '10.11.0.0/24'
38 main_storage_backend_interface:
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +020039 type: string
Oleh Hryhorov207137d2021-04-13 12:03:39 +030040 default: 'ens6'
41 private_floating_network_cidr:
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +020042 type: string
Oleh Hryhorov207137d2021-04-13 12:03:39 +030043 default: '10.11.12.0/24'
44 private_floating_network_ipam_pool_start:
45 type: string
46 description: pool start which is used as pool for IPAM and assigned to instances port
47 default: '10.11.12.2'
48 private_floating_network_ipam_pool_end:
49 type: string
50 description: pool end which is used as pool for IPAM and assigned to instances port
51 default: '10.11.12.99'
52 private_floating_network_pool_start:
53 type: string
54 default: '10.11.12.100'
55 private_floating_network_pool_end:
56 type: string
57 default: '10.11.12.200'
58 private_floating_network_gateway:
59 type: string
60 default: ''
61 private_floating_network_interface:
62 type: string
63 default: 'veth-phy'
64 private_floating_interface:
65 description: Interface which carries floating network for child OpenStack.
66 type: string
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +020067 rack01_network_cidr:
68 type: string
69 default: '10.1.0.0/16'
70 rack01_control_network_cidr:
71 type: string
72 description: The CIDR of control network, used to detect control interface.
73 default: '10.1.1.0/24'
74 rack01_central_router_uplink_network_cidr:
75 type: string
76 default: '192.168.0.0/28'
77 rack02_network_cidr:
78 type: string
79 default: '10.2.0.0/16'
80 rack02_control_network_cidr:
81 type: string
82 description: The CIDR of control network, used to detect control interface.
83 default: '10.2.1.0/24'
84 rack02_central_router_uplink_network_cidr:
85 type: string
86 default: '192.168.0.16/28'
87 main_worker_size:
88 type: number
89 description: Number of workers to deploy
90 default: 3
91 rack01_cmp_size:
92 type: number
93 description: Number of cmp workers to deploy
94 default: 0
95 rack02_cmp_size:
96 type: number
97 description: Number of cmp workers to deploy
98 default: 0
99 cluster_public_key:
100 type: string
101 ucp_metadata:
102 type: json
103 default: {"role":"ucp"}
104 main_worker_metadata:
105 type: json
106 default: {}
107 rack01_cmp_metadata:
108 type: json
109 default: {}
110 rack02_cmp_metadata:
111 type: json
112 default: {}
113 ucp_flavor:
114 type: string
115 default: 'kaas-bm.worker'
116 main_worker_flavor:
117 type: string
118 default: 'system.compact.openstack.control'
119 rack01_cmp_flavor:
120 type: string
121 default: 'system.compact.openstack.control'
122 rack02_cmp_flavor:
123 type: string
124 default: 'system.compact.openstack.control'
125 docker_ee_url:
126 type: string
Vasyl Saienko552250d2021-03-19 12:07:23 +0200127 default: 'https://storebits.docker.com/ubuntu'
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200128 docker_ee_release:
129 type: string
130 default: 'stable-19.03'
131 docker_ucp_image:
132 type: string
133 default: 'docker/ucp:3.2.4'
Stepan Rogov60bc3522020-12-16 17:43:25 +0300134 docker_default_address_pool:
135 type: string
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300136 description: Default address pool for Docker ucp specific local networks
137 default: '10.10.1.0/16'
Vasyl Saienkoa94bf182023-04-01 10:42:17 +0000138 binary_base_url:
139 type: string
140 default: 'http://binary.mirantis.com'
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200141 tunnel_interface:
142 type: string
143 default: ''
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300144 tungstenfabric_enabled:
145 type: boolean
146 default: false
147 live_migration_interface:
148 type: string
149 default: ''
150 metallb_address_pools:
151 type: comma_delimited_list
152 default: ''
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200153 main_worker_hardware_metadata:
154 type: string
155 default: ''
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300156 central_boot_timeout:
157 type: number
158 description: Boot timeout for central site instances
159 default: 5400
160 rack_boot_timeout:
161 type: number
162 description: Boot timeout for rack instances
163 default: 3600
164 rack_private_floating_interface:
165 type: string
166 rack_functions_override:
167 type: string
168 default: ''
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300169 lmas_size:
170 type: number
171 lmas_metadata:
172 type: json
173 lmas_flavor:
174 type: string
175 default_interface:
176 type: string
177 default: ''
178 qos_max_burst_kbps_ingress:
179 type: number
180 default: 0
181 qos_max_kbps_ingress:
182 type: number
183 default: 0
184 qos_max_burst_kbps_egress:
185 type: number
186 default: 0
187 qos_max_kbps_egress:
188 type: number
189 default: 0
190
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200191
192resources:
193 keypair_name:
194 type: OS::Heat::RandomString
195 properties:
196 character_classes: [{"class": "hexdigits", "min": 1}]
197 length: 128
198 salt: constant
199 key_pair:
200 type: OS::Nova::KeyPair
201 properties:
202 name: { get_attr: [keypair_name, value] }
203 public_key: { get_param: cluster_public_key }
204 save_private_key: false
205
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300206 qos_policy_gen_name:
207 type: OS::Heat::RandomString
208 properties:
209 character_classes: [{"class": "hexdigits", "min": 1}]
210 length: 8
211 salt: constant
212
213 rack_qos_policy:
214 type: OS::Neutron::QoSPolicy
215 properties:
216 description: String
217 name:
218 list_join:
219 - '-'
220 - [ { get_param: "OS::stack_name" }, { get_attr: [qos_policy_gen_name, value] } ]
221 shared: True
222
223 rack_bandwith_rule_egress:
224 type: OS::Neutron::QoSBandwidthLimitRule
225 properties:
226 max_burst_kbps: { get_param: qos_max_burst_kbps_egress }
227 max_kbps: { get_param: qos_max_kbps_egress }
228 policy: { get_resource: rack_qos_policy }
229# NOTE (ohryhorov): section below with "direction" should be uncommented once cloud is
230# upgraded to OpenStack Train version.
231#
232# direction: 'egress'
233#
234# rack_bandwith_rule_ingress:
235# type: OS::Neutron::QoSBandwidthLimitRule
236# properties:
237# max_burst_kbps: { get_param: qos_max_burst_kbps_ingress }
238# max_kbps: { get_param: qos_max_kbps_ingress }
239# policy: { get_resource: rack_qos_policy }
240# direction: 'ingress'
241
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200242 central_site:
243 type: MCP2::CentralSite
244 properties:
245 ucp_metadata: { get_param: ucp_metadata}
246 docker_ee_url: { get_param: docker_ee_url }
247 docker_ee_release: { get_param: docker_ee_release }
248 docker_ucp_image: { get_param: docker_ucp_image}
Stepan Rogov60bc3522020-12-16 17:43:25 +0300249 docker_default_address_pool: { get_param: docker_default_address_pool }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200250 key_name: { get_attr: [keypair_name, value] }
251 image: { get_param: image }
252 ucp_flavor: { get_param: ucp_flavor }
253 public_net_id: { get_param: public_net_id }
254 control_network_cidr: { get_param: main_control_network_cidr }
255 tunnel_network_cidr: { get_param: main_tunnel_network_cidr }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300256 storage_frontend_interface: { get_param: main_storage_frontend_interface }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200257 storage_frontend_network_cidr: { get_param: main_storage_frontend_network_cidr }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300258 storage_backend_interface: { get_param: main_storage_backend_interface }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200259 storage_backend_network_cidr: { get_param: main_storage_backend_network_cidr }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300260 private_floating_network_cidr: { get_param: private_floating_network_cidr }
261 private_floating_interface: { get_param: private_floating_interface }
262 private_floating_network_ipam_pool_start: { get_param: private_floating_network_ipam_pool_start }
263 private_floating_network_ipam_pool_end: { get_param: private_floating_network_ipam_pool_end }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200264 worker_size: { get_param: main_worker_size }
265 worker_flavor: { get_param: main_worker_flavor }
266 worker_metadata: { get_param: main_worker_metadata }
267 worker_hardware_metadata: { get_param: main_worker_hardware_metadata }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300268 dns_nameservers: { get_param: dns_nameservers }
269 boot_timeout: { get_param: central_boot_timeout }
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300270 lmas_size: { get_param: lmas_size }
271 lmas_metadata: { get_param: lmas_metadata }
272 lmas_flavor: { get_param: lmas_flavor }
273 lmas_hardware_metadata: { get_param: main_worker_hardware_metadata }
274 default_interface: { get_param: default_interface }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200275
276 rack01_router_routes:
277 type: MCP2::RackRouterRoutes
278 properties:
279 central_router: { get_attr: [central_site, router_id] }
280 central_router_uplink_network_cidr: { get_param: rack01_central_router_uplink_network_cidr }
281 site_cidr: { get_param: rack01_network_cidr }
282 lab_network_cidr: { get_param: lab_network_cidr }
283 public_net_id: { get_param: public_net_id }
284
285 rack01:
286 depends_on:
287 - central_site
288 type: MCP2::Rack
289 properties:
290 docker_ee_url: { get_param: docker_ee_url }
291 docker_ee_release: { get_param: docker_ee_release }
292 docker_ucp_image: { get_param: docker_ucp_image}
Stepan Rogov60bc3522020-12-16 17:43:25 +0300293 docker_default_address_pool: { get_param: docker_default_address_pool }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200294 key_name: { get_attr: [keypair_name, value] }
295 image: { get_param: image }
296 public_net_id: { get_param: public_net_id }
297 control_network_cidr: { get_param: rack01_control_network_cidr }
298 cmp_size: { get_param: rack01_cmp_size }
299 cmp_flavor: { get_param: rack01_cmp_flavor }
300 cmp_metadata: { get_param: rack01_cmp_metadata }
301 ucp_master_host: { get_attr: [central_site, ucp_control_ip] }
302 rack_router: {get_attr: [rack01_router_routes, router_id] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300303 boot_timeout: { get_param: rack_boot_timeout }
304 private_floating_interface: { get_param: rack_private_floating_interface }
305 functions_override: { get_param: rack_functions_override }
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300306 qos_policy_name: { get_resource: rack_qos_policy }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200307
308 rack02_router_routes:
309 depends_on:
310 - rack01_router_routes
311 type: MCP2::RackRouterRoutes
312 properties:
313 central_router: { get_attr: [central_site, router_id] }
314 central_router_uplink_network_cidr: { get_param: rack02_central_router_uplink_network_cidr }
315 site_cidr: { get_param: rack02_network_cidr }
316 lab_network_cidr: { get_param: lab_network_cidr }
317 public_net_id: { get_param: public_net_id }
318
319 rack02:
320 depends_on:
321 - central_site
322 type: MCP2::Rack
323 properties:
324 docker_ee_url: { get_param: docker_ee_url }
325 docker_ee_release: { get_param: docker_ee_release }
326 docker_ucp_image: { get_param: docker_ucp_image}
Stepan Rogov60bc3522020-12-16 17:43:25 +0300327 docker_default_address_pool: { get_param: docker_default_address_pool }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200328 key_name: { get_attr: [keypair_name, value] }
329 image: { get_param: image }
330 public_net_id: { get_param: public_net_id }
331 control_network_cidr: { get_param: rack02_control_network_cidr }
332 cmp_size: { get_param: rack02_cmp_size }
333 cmp_flavor: { get_param: rack02_cmp_flavor }
334 cmp_metadata: { get_param: rack02_cmp_metadata }
335 ucp_master_host: { get_attr: [central_site, ucp_control_ip] }
336 rack_router: {get_attr: [rack02_router_routes, router_id] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300337 boot_timeout: { get_param: rack_boot_timeout }
338 private_floating_interface: { get_param: rack_private_floating_interface }
339 functions_override: { get_param: rack_functions_override }
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300340 qos_policy_name: { get_resource: rack_qos_policy }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200341
342outputs:
343 central_site_worker_public_ip:
344 description: IP address of server in private network
345 value: { get_attr: [central_site, worker_public_ip] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300346 ucp_ips:
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200347 description: IP address of server in private network
348 value: { get_attr: [central_site, ucp_public_ip] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300349 workers_wc_data:
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200350 description: Metadata from instance
351 value: { get_attr: [central_site, worker_wc_data]}
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300352 cmps_wc_data:
353 description: Metadata from cmps
354 value: {list_concat: [ {get_attr: [rack01, cmp_wc_data]}, {get_attr: [rack02, cmp_wc_data]} ]}
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200355 rack01_cmp_public_ip:
356 value: { get_attr: [rack01, cmp_public_ip] }
357 rack02_cmp_public_ip:
358 value: { get_attr: [rack02, cmp_public_ip] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300359 worker_private_floating_ips:
360 description: IPs might be used as gateway
361 value: { get_attr: [central_site, server_private_floating_ip] }
362 private_floating_cidr:
363 value: { get_param: private_floating_network_cidr }
364 private_floating_network_pool_start:
365 value: { get_param: private_floating_network_pool_start }
366 private_floating_network_pool_end:
367 value: { get_param: private_floating_network_pool_end }
368 private_floating_network_gateway:
369 value: { get_param: private_floating_network_gateway }
370 live_migration_interface:
371 value: { get_param: live_migration_interface }
372 tunnel_interface:
373 value: { get_param: tunnel_interface }
374 metallb_address_pools:
375 value: { get_param: metallb_address_pools }
376 storage_frontend_network_cidr:
377 description: Storage network which is used as clientNet in Ceph CR
378 value: { get_param: main_storage_frontend_network_cidr }
379 storage_backend_network_cidr:
380 description: Storage network which is used as clusterNet in Ceph CR
381 value: { get_param: main_storage_backend_network_cidr }
382 private_floating_network_interface:
383 value: { get_param: private_floating_network_interface }
384 tungstenfabric_enabled:
385 value: { get_param: tungstenfabric_enabled }
386 workers_ips:
387 description: Private IP addresses of the deployed worker instances
388 value: { get_attr: [central_site, worker_public_ip] }
389 cmps_ips:
390 description: Private IP addresses of the deployed cmp instances
391 value: {list_concat: [ {get_attr: [rack01, cmp_public_ip]}, {get_attr: [rack02, cmp_public_ip]} ]}