blob: 27a50f95a95d2e79a475f7bdc37abaa8f1742a21 [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
Vasyl Saienko5b6d70a2023-04-10 13:55:31 +000051 default: '10.11.12.70'
Oleh Hryhorov207137d2021-04-13 12:03:39 +030052 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
Oleksandr Kononenkobf4ecf82024-02-01 11:02:53 +0200127 default: 'https://repos.mirantis.com/ubuntu'
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200128 docker_ee_release:
129 type: string
130 default: 'stable-19.03'
Vasyl Saienkofa714102024-03-22 09:30:25 +0200131 docker_ee_packages:
132 type: string
133 default: 'docker-ee'
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200134 docker_ucp_image:
135 type: string
136 default: 'docker/ucp:3.2.4'
Stepan Rogov60bc3522020-12-16 17:43:25 +0300137 docker_default_address_pool:
138 type: string
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300139 description: Default address pool for Docker ucp specific local networks
140 default: '10.10.1.0/16'
Vasyl Saienkoa94bf182023-04-01 10:42:17 +0000141 binary_base_url:
142 type: string
143 default: 'http://binary.mirantis.com'
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200144 tunnel_interface:
145 type: string
146 default: ''
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300147 tungstenfabric_enabled:
148 type: boolean
149 default: false
150 live_migration_interface:
151 type: string
152 default: ''
153 metallb_address_pools:
154 type: comma_delimited_list
155 default: ''
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200156 main_worker_hardware_metadata:
157 type: string
158 default: ''
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300159 central_boot_timeout:
160 type: number
161 description: Boot timeout for central site instances
162 default: 5400
163 rack_boot_timeout:
164 type: number
165 description: Boot timeout for rack instances
166 default: 3600
167 rack_private_floating_interface:
168 type: string
169 rack_functions_override:
170 type: string
171 default: ''
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300172 lmas_size:
173 type: number
174 lmas_metadata:
175 type: json
176 lmas_flavor:
177 type: string
178 default_interface:
179 type: string
180 default: ''
181 qos_max_burst_kbps_ingress:
182 type: number
183 default: 0
184 qos_max_kbps_ingress:
185 type: number
186 default: 0
187 qos_max_burst_kbps_egress:
188 type: number
189 default: 0
190 qos_max_kbps_egress:
191 type: number
192 default: 0
193
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200194
195resources:
196 keypair_name:
197 type: OS::Heat::RandomString
198 properties:
199 character_classes: [{"class": "hexdigits", "min": 1}]
200 length: 128
201 salt: constant
202 key_pair:
203 type: OS::Nova::KeyPair
204 properties:
205 name: { get_attr: [keypair_name, value] }
206 public_key: { get_param: cluster_public_key }
207 save_private_key: false
208
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300209 qos_policy_gen_name:
210 type: OS::Heat::RandomString
211 properties:
212 character_classes: [{"class": "hexdigits", "min": 1}]
213 length: 8
214 salt: constant
215
216 rack_qos_policy:
217 type: OS::Neutron::QoSPolicy
218 properties:
219 description: String
220 name:
221 list_join:
222 - '-'
223 - [ { get_param: "OS::stack_name" }, { get_attr: [qos_policy_gen_name, value] } ]
224 shared: True
225
226 rack_bandwith_rule_egress:
227 type: OS::Neutron::QoSBandwidthLimitRule
228 properties:
229 max_burst_kbps: { get_param: qos_max_burst_kbps_egress }
230 max_kbps: { get_param: qos_max_kbps_egress }
231 policy: { get_resource: rack_qos_policy }
232# NOTE (ohryhorov): section below with "direction" should be uncommented once cloud is
233# upgraded to OpenStack Train version.
234#
235# direction: 'egress'
236#
237# rack_bandwith_rule_ingress:
238# type: OS::Neutron::QoSBandwidthLimitRule
239# properties:
240# max_burst_kbps: { get_param: qos_max_burst_kbps_ingress }
241# max_kbps: { get_param: qos_max_kbps_ingress }
242# policy: { get_resource: rack_qos_policy }
243# direction: 'ingress'
244
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200245 central_site:
246 type: MCP2::CentralSite
247 properties:
248 ucp_metadata: { get_param: ucp_metadata}
249 docker_ee_url: { get_param: docker_ee_url }
250 docker_ee_release: { get_param: docker_ee_release }
Vasyl Saienkofa714102024-03-22 09:30:25 +0200251 docker_ee_packages: { get_param: docker_ee_packages }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200252 docker_ucp_image: { get_param: docker_ucp_image}
Stepan Rogov60bc3522020-12-16 17:43:25 +0300253 docker_default_address_pool: { get_param: docker_default_address_pool }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200254 key_name: { get_attr: [keypair_name, value] }
255 image: { get_param: image }
256 ucp_flavor: { get_param: ucp_flavor }
257 public_net_id: { get_param: public_net_id }
258 control_network_cidr: { get_param: main_control_network_cidr }
259 tunnel_network_cidr: { get_param: main_tunnel_network_cidr }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300260 storage_frontend_interface: { get_param: main_storage_frontend_interface }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200261 storage_frontend_network_cidr: { get_param: main_storage_frontend_network_cidr }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300262 storage_backend_interface: { get_param: main_storage_backend_interface }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200263 storage_backend_network_cidr: { get_param: main_storage_backend_network_cidr }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300264 private_floating_network_cidr: { get_param: private_floating_network_cidr }
265 private_floating_interface: { get_param: private_floating_interface }
266 private_floating_network_ipam_pool_start: { get_param: private_floating_network_ipam_pool_start }
267 private_floating_network_ipam_pool_end: { get_param: private_floating_network_ipam_pool_end }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200268 worker_size: { get_param: main_worker_size }
269 worker_flavor: { get_param: main_worker_flavor }
270 worker_metadata: { get_param: main_worker_metadata }
271 worker_hardware_metadata: { get_param: main_worker_hardware_metadata }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300272 dns_nameservers: { get_param: dns_nameservers }
273 boot_timeout: { get_param: central_boot_timeout }
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300274 lmas_size: { get_param: lmas_size }
275 lmas_metadata: { get_param: lmas_metadata }
276 lmas_flavor: { get_param: lmas_flavor }
277 lmas_hardware_metadata: { get_param: main_worker_hardware_metadata }
278 default_interface: { get_param: default_interface }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200279
280 rack01_router_routes:
281 type: MCP2::RackRouterRoutes
282 properties:
283 central_router: { get_attr: [central_site, router_id] }
284 central_router_uplink_network_cidr: { get_param: rack01_central_router_uplink_network_cidr }
285 site_cidr: { get_param: rack01_network_cidr }
286 lab_network_cidr: { get_param: lab_network_cidr }
287 public_net_id: { get_param: public_net_id }
288
289 rack01:
290 depends_on:
291 - central_site
292 type: MCP2::Rack
293 properties:
294 docker_ee_url: { get_param: docker_ee_url }
295 docker_ee_release: { get_param: docker_ee_release }
Vasyl Saienkofa714102024-03-22 09:30:25 +0200296 docker_ee_packages: { get_param: docker_ee_packages }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200297 docker_ucp_image: { get_param: docker_ucp_image}
Stepan Rogov60bc3522020-12-16 17:43:25 +0300298 docker_default_address_pool: { get_param: docker_default_address_pool }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200299 key_name: { get_attr: [keypair_name, value] }
300 image: { get_param: image }
301 public_net_id: { get_param: public_net_id }
302 control_network_cidr: { get_param: rack01_control_network_cidr }
303 cmp_size: { get_param: rack01_cmp_size }
304 cmp_flavor: { get_param: rack01_cmp_flavor }
305 cmp_metadata: { get_param: rack01_cmp_metadata }
306 ucp_master_host: { get_attr: [central_site, ucp_control_ip] }
307 rack_router: {get_attr: [rack01_router_routes, router_id] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300308 boot_timeout: { get_param: rack_boot_timeout }
309 private_floating_interface: { get_param: rack_private_floating_interface }
310 functions_override: { get_param: rack_functions_override }
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300311 qos_policy_name: { get_resource: rack_qos_policy }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200312
313 rack02_router_routes:
314 depends_on:
315 - rack01_router_routes
316 type: MCP2::RackRouterRoutes
317 properties:
318 central_router: { get_attr: [central_site, router_id] }
319 central_router_uplink_network_cidr: { get_param: rack02_central_router_uplink_network_cidr }
320 site_cidr: { get_param: rack02_network_cidr }
321 lab_network_cidr: { get_param: lab_network_cidr }
322 public_net_id: { get_param: public_net_id }
323
324 rack02:
325 depends_on:
326 - central_site
327 type: MCP2::Rack
328 properties:
329 docker_ee_url: { get_param: docker_ee_url }
330 docker_ee_release: { get_param: docker_ee_release }
Vasyl Saienkofa714102024-03-22 09:30:25 +0200331 docker_ee_packages: { get_param: docker_ee_packages }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200332 docker_ucp_image: { get_param: docker_ucp_image}
Stepan Rogov60bc3522020-12-16 17:43:25 +0300333 docker_default_address_pool: { get_param: docker_default_address_pool }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200334 key_name: { get_attr: [keypair_name, value] }
335 image: { get_param: image }
336 public_net_id: { get_param: public_net_id }
337 control_network_cidr: { get_param: rack02_control_network_cidr }
338 cmp_size: { get_param: rack02_cmp_size }
339 cmp_flavor: { get_param: rack02_cmp_flavor }
340 cmp_metadata: { get_param: rack02_cmp_metadata }
341 ucp_master_host: { get_attr: [central_site, ucp_control_ip] }
342 rack_router: {get_attr: [rack02_router_routes, router_id] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300343 boot_timeout: { get_param: rack_boot_timeout }
344 private_floating_interface: { get_param: rack_private_floating_interface }
345 functions_override: { get_param: rack_functions_override }
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300346 qos_policy_name: { get_resource: rack_qos_policy }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200347
348outputs:
349 central_site_worker_public_ip:
350 description: IP address of server in private network
351 value: { get_attr: [central_site, worker_public_ip] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300352 ucp_ips:
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200353 description: IP address of server in private network
354 value: { get_attr: [central_site, ucp_public_ip] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300355 workers_wc_data:
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200356 description: Metadata from instance
357 value: { get_attr: [central_site, worker_wc_data]}
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300358 cmps_wc_data:
359 description: Metadata from cmps
360 value: {list_concat: [ {get_attr: [rack01, cmp_wc_data]}, {get_attr: [rack02, cmp_wc_data]} ]}
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200361 rack01_cmp_public_ip:
362 value: { get_attr: [rack01, cmp_public_ip] }
363 rack02_cmp_public_ip:
364 value: { get_attr: [rack02, cmp_public_ip] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300365 worker_private_floating_ips:
366 description: IPs might be used as gateway
367 value: { get_attr: [central_site, server_private_floating_ip] }
368 private_floating_cidr:
369 value: { get_param: private_floating_network_cidr }
370 private_floating_network_pool_start:
371 value: { get_param: private_floating_network_pool_start }
372 private_floating_network_pool_end:
373 value: { get_param: private_floating_network_pool_end }
374 private_floating_network_gateway:
375 value: { get_param: private_floating_network_gateway }
376 live_migration_interface:
377 value: { get_param: live_migration_interface }
378 tunnel_interface:
379 value: { get_param: tunnel_interface }
380 metallb_address_pools:
381 value: { get_param: metallb_address_pools }
382 storage_frontend_network_cidr:
383 description: Storage network which is used as clientNet in Ceph CR
384 value: { get_param: main_storage_frontend_network_cidr }
385 storage_backend_network_cidr:
386 description: Storage network which is used as clusterNet in Ceph CR
387 value: { get_param: main_storage_backend_network_cidr }
388 private_floating_network_interface:
389 value: { get_param: private_floating_network_interface }
390 tungstenfabric_enabled:
391 value: { get_param: tungstenfabric_enabled }
392 workers_ips:
393 description: Private IP addresses of the deployed worker instances
394 value: { get_attr: [central_site, worker_public_ip] }
395 cmps_ips:
396 description: Private IP addresses of the deployed cmp instances
397 value: {list_concat: [ {get_attr: [rack01, cmp_public_ip]}, {get_attr: [rack02, cmp_public_ip]} ]}