blob: abcae0385bedae55e04ae573ded504de5c7ccd7f [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 Saienko5a58a5f2020-12-09 14:15:24 +0200138 tunnel_interface:
139 type: string
140 default: ''
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300141 tungstenfabric_enabled:
142 type: boolean
143 default: false
144 live_migration_interface:
145 type: string
146 default: ''
147 metallb_address_pools:
148 type: comma_delimited_list
149 default: ''
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200150 main_worker_hardware_metadata:
151 type: string
152 default: ''
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300153 central_boot_timeout:
154 type: number
155 description: Boot timeout for central site instances
156 default: 5400
157 rack_boot_timeout:
158 type: number
159 description: Boot timeout for rack instances
160 default: 3600
161 rack_private_floating_interface:
162 type: string
163 rack_functions_override:
164 type: string
165 default: ''
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300166 lmas_size:
167 type: number
168 lmas_metadata:
169 type: json
170 lmas_flavor:
171 type: string
172 default_interface:
173 type: string
174 default: ''
175 qos_max_burst_kbps_ingress:
176 type: number
177 default: 0
178 qos_max_kbps_ingress:
179 type: number
180 default: 0
181 qos_max_burst_kbps_egress:
182 type: number
183 default: 0
184 qos_max_kbps_egress:
185 type: number
186 default: 0
187
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200188
189resources:
190 keypair_name:
191 type: OS::Heat::RandomString
192 properties:
193 character_classes: [{"class": "hexdigits", "min": 1}]
194 length: 128
195 salt: constant
196 key_pair:
197 type: OS::Nova::KeyPair
198 properties:
199 name: { get_attr: [keypair_name, value] }
200 public_key: { get_param: cluster_public_key }
201 save_private_key: false
202
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300203 qos_policy_gen_name:
204 type: OS::Heat::RandomString
205 properties:
206 character_classes: [{"class": "hexdigits", "min": 1}]
207 length: 8
208 salt: constant
209
210 rack_qos_policy:
211 type: OS::Neutron::QoSPolicy
212 properties:
213 description: String
214 name:
215 list_join:
216 - '-'
217 - [ { get_param: "OS::stack_name" }, { get_attr: [qos_policy_gen_name, value] } ]
218 shared: True
219
220 rack_bandwith_rule_egress:
221 type: OS::Neutron::QoSBandwidthLimitRule
222 properties:
223 max_burst_kbps: { get_param: qos_max_burst_kbps_egress }
224 max_kbps: { get_param: qos_max_kbps_egress }
225 policy: { get_resource: rack_qos_policy }
226# NOTE (ohryhorov): section below with "direction" should be uncommented once cloud is
227# upgraded to OpenStack Train version.
228#
229# direction: 'egress'
230#
231# rack_bandwith_rule_ingress:
232# type: OS::Neutron::QoSBandwidthLimitRule
233# properties:
234# max_burst_kbps: { get_param: qos_max_burst_kbps_ingress }
235# max_kbps: { get_param: qos_max_kbps_ingress }
236# policy: { get_resource: rack_qos_policy }
237# direction: 'ingress'
238
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200239 central_site:
240 type: MCP2::CentralSite
241 properties:
242 ucp_metadata: { get_param: ucp_metadata}
243 docker_ee_url: { get_param: docker_ee_url }
244 docker_ee_release: { get_param: docker_ee_release }
245 docker_ucp_image: { get_param: docker_ucp_image}
Stepan Rogov60bc3522020-12-16 17:43:25 +0300246 docker_default_address_pool: { get_param: docker_default_address_pool }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200247 key_name: { get_attr: [keypair_name, value] }
248 image: { get_param: image }
249 ucp_flavor: { get_param: ucp_flavor }
250 public_net_id: { get_param: public_net_id }
251 control_network_cidr: { get_param: main_control_network_cidr }
252 tunnel_network_cidr: { get_param: main_tunnel_network_cidr }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300253 storage_frontend_interface: { get_param: main_storage_frontend_interface }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200254 storage_frontend_network_cidr: { get_param: main_storage_frontend_network_cidr }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300255 storage_backend_interface: { get_param: main_storage_backend_interface }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200256 storage_backend_network_cidr: { get_param: main_storage_backend_network_cidr }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300257 private_floating_network_cidr: { get_param: private_floating_network_cidr }
258 private_floating_interface: { get_param: private_floating_interface }
259 private_floating_network_ipam_pool_start: { get_param: private_floating_network_ipam_pool_start }
260 private_floating_network_ipam_pool_end: { get_param: private_floating_network_ipam_pool_end }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200261 worker_size: { get_param: main_worker_size }
262 worker_flavor: { get_param: main_worker_flavor }
263 worker_metadata: { get_param: main_worker_metadata }
264 worker_hardware_metadata: { get_param: main_worker_hardware_metadata }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300265 dns_nameservers: { get_param: dns_nameservers }
266 boot_timeout: { get_param: central_boot_timeout }
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300267 lmas_size: { get_param: lmas_size }
268 lmas_metadata: { get_param: lmas_metadata }
269 lmas_flavor: { get_param: lmas_flavor }
270 lmas_hardware_metadata: { get_param: main_worker_hardware_metadata }
271 default_interface: { get_param: default_interface }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200272
273 rack01_router_routes:
274 type: MCP2::RackRouterRoutes
275 properties:
276 central_router: { get_attr: [central_site, router_id] }
277 central_router_uplink_network_cidr: { get_param: rack01_central_router_uplink_network_cidr }
278 site_cidr: { get_param: rack01_network_cidr }
279 lab_network_cidr: { get_param: lab_network_cidr }
280 public_net_id: { get_param: public_net_id }
281
282 rack01:
283 depends_on:
284 - central_site
285 type: MCP2::Rack
286 properties:
287 docker_ee_url: { get_param: docker_ee_url }
288 docker_ee_release: { get_param: docker_ee_release }
289 docker_ucp_image: { get_param: docker_ucp_image}
Stepan Rogov60bc3522020-12-16 17:43:25 +0300290 docker_default_address_pool: { get_param: docker_default_address_pool }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200291 key_name: { get_attr: [keypair_name, value] }
292 image: { get_param: image }
293 public_net_id: { get_param: public_net_id }
294 control_network_cidr: { get_param: rack01_control_network_cidr }
295 cmp_size: { get_param: rack01_cmp_size }
296 cmp_flavor: { get_param: rack01_cmp_flavor }
297 cmp_metadata: { get_param: rack01_cmp_metadata }
298 ucp_master_host: { get_attr: [central_site, ucp_control_ip] }
299 rack_router: {get_attr: [rack01_router_routes, router_id] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300300 boot_timeout: { get_param: rack_boot_timeout }
301 private_floating_interface: { get_param: rack_private_floating_interface }
302 functions_override: { get_param: rack_functions_override }
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300303 qos_policy_name: { get_resource: rack_qos_policy }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200304
305 rack02_router_routes:
306 depends_on:
307 - rack01_router_routes
308 type: MCP2::RackRouterRoutes
309 properties:
310 central_router: { get_attr: [central_site, router_id] }
311 central_router_uplink_network_cidr: { get_param: rack02_central_router_uplink_network_cidr }
312 site_cidr: { get_param: rack02_network_cidr }
313 lab_network_cidr: { get_param: lab_network_cidr }
314 public_net_id: { get_param: public_net_id }
315
316 rack02:
317 depends_on:
318 - central_site
319 type: MCP2::Rack
320 properties:
321 docker_ee_url: { get_param: docker_ee_url }
322 docker_ee_release: { get_param: docker_ee_release }
323 docker_ucp_image: { get_param: docker_ucp_image}
Stepan Rogov60bc3522020-12-16 17:43:25 +0300324 docker_default_address_pool: { get_param: docker_default_address_pool }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200325 key_name: { get_attr: [keypair_name, value] }
326 image: { get_param: image }
327 public_net_id: { get_param: public_net_id }
328 control_network_cidr: { get_param: rack02_control_network_cidr }
329 cmp_size: { get_param: rack02_cmp_size }
330 cmp_flavor: { get_param: rack02_cmp_flavor }
331 cmp_metadata: { get_param: rack02_cmp_metadata }
332 ucp_master_host: { get_attr: [central_site, ucp_control_ip] }
333 rack_router: {get_attr: [rack02_router_routes, router_id] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300334 boot_timeout: { get_param: rack_boot_timeout }
335 private_floating_interface: { get_param: rack_private_floating_interface }
336 functions_override: { get_param: rack_functions_override }
Oleh Hryhorovf4677af2021-04-26 18:00:15 +0300337 qos_policy_name: { get_resource: rack_qos_policy }
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200338
339outputs:
340 central_site_worker_public_ip:
341 description: IP address of server in private network
342 value: { get_attr: [central_site, worker_public_ip] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300343 ucp_ips:
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200344 description: IP address of server in private network
345 value: { get_attr: [central_site, ucp_public_ip] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300346 workers_wc_data:
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200347 description: Metadata from instance
348 value: { get_attr: [central_site, worker_wc_data]}
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300349 cmps_wc_data:
350 description: Metadata from cmps
351 value: {list_concat: [ {get_attr: [rack01, cmp_wc_data]}, {get_attr: [rack02, cmp_wc_data]} ]}
Vasyl Saienko5a58a5f2020-12-09 14:15:24 +0200352 rack01_cmp_public_ip:
353 value: { get_attr: [rack01, cmp_public_ip] }
354 rack02_cmp_public_ip:
355 value: { get_attr: [rack02, cmp_public_ip] }
Oleh Hryhorov207137d2021-04-13 12:03:39 +0300356 worker_private_floating_ips:
357 description: IPs might be used as gateway
358 value: { get_attr: [central_site, server_private_floating_ip] }
359 private_floating_cidr:
360 value: { get_param: private_floating_network_cidr }
361 private_floating_network_pool_start:
362 value: { get_param: private_floating_network_pool_start }
363 private_floating_network_pool_end:
364 value: { get_param: private_floating_network_pool_end }
365 private_floating_network_gateway:
366 value: { get_param: private_floating_network_gateway }
367 live_migration_interface:
368 value: { get_param: live_migration_interface }
369 tunnel_interface:
370 value: { get_param: tunnel_interface }
371 metallb_address_pools:
372 value: { get_param: metallb_address_pools }
373 storage_frontend_network_cidr:
374 description: Storage network which is used as clientNet in Ceph CR
375 value: { get_param: main_storage_frontend_network_cidr }
376 storage_backend_network_cidr:
377 description: Storage network which is used as clusterNet in Ceph CR
378 value: { get_param: main_storage_backend_network_cidr }
379 private_floating_network_interface:
380 value: { get_param: private_floating_network_interface }
381 tungstenfabric_enabled:
382 value: { get_param: tungstenfabric_enabled }
383 workers_ips:
384 description: Private IP addresses of the deployed worker instances
385 value: { get_attr: [central_site, worker_public_ip] }
386 cmps_ips:
387 description: Private IP addresses of the deployed cmp instances
388 value: {list_concat: [ {get_attr: [rack01, cmp_public_ip]}, {get_attr: [rack02, cmp_public_ip]} ]}