blob: e8c492994d2e2ae1d9668754ca113ee5a92806ca [file] [log] [blame]
Anton Samoylove2e969e2024-10-03 15:28:31 +04001heat_template_version: queens
2
3parameters:
4 controllers_size:
5 type: number
6 description: Number of masters instances to deploy
7 default: 1
8 workers_size:
9 type: number
10 description: Number of workers to deploy
11 default: 3
12 image:
13 type: string
14 description: Name of image to use for servers
15 availability_zone:
16 type: string
17 default: "nova"
18 masters_flavor:
19 type: string
20 default: 'system.compact.openstack.control'
21 workers_flavor:
22 type: string
23 default: 'system.compact.openstack.control'
24 cluster_public_key:
25 type: string
26 public_net_id:
27 type: string
28 default: ''
29 description: >
30 UUID of public network
31 k8s_network_cidr:
32 type: string
33 description: The CIDR of k8s network
34 default: '10.10.0.0/24'
35 data_network_cidr:
36 type: string
37 description: The CIDR of k8s network
38 default: '10.11.0.0/24'
Anton Samoylov17e7c032024-10-14 23:55:18 +040039 storage_backend_network_cidr:
40 type: string
41 default: '10.12.0.0/24'
42 storage_frontend_network_cidr:
43 type: string
44 default: '10.12.1.0/24'
Anton Samoylove2e969e2024-10-03 15:28:31 +040045 dns_nameservers:
46 type: json
Anton Samoylov17e7c032024-10-14 23:55:18 +040047 default: ['172.18.224.6', '172.18.176.6']
48 hardware_metadata:
49 description: The content of lab metadata.
50 default: ''
51 type: string
52 worker_metadata:
53 type: json
54 default: {}
55 boot_timeout:
56 type: number
57 description: Boot timeout for instance
58 default: 600
Anton Samoylove2e969e2024-10-03 15:28:31 +040059
60resources:
61
62 keypair_name:
63 type: OS::Heat::RandomString
64 properties:
65 character_classes: [{"class": "hexdigits", "min": 1}]
66 length: 128
67 salt: constant
68 key_pair:
69 type: OS::Nova::KeyPair
70 properties:
71 name: { get_attr: [keypair_name, value] }
72 public_key: { get_param: cluster_public_key }
73 save_private_key: false
74
75 k8s_network:
76 type: OS::Neutron::Net
77 k8s_subnet:
78 type: OS::Neutron::Subnet
79 properties:
80 network: { get_resource: k8s_network }
81 enable_dhcp: false
82 cidr: { get_param: k8s_network_cidr }
83 dns_nameservers: { get_param: dns_nameservers }
84 router:
85 type: OS::Neutron::Router
86 properties:
87 external_gateway_info:
88 network: { get_param: public_net_id }
89 public_router_iface:
90 type: OS::Neutron::RouterInterface
91 properties:
92 router: { get_resource: router }
93 subnet: { get_resource: k8s_subnet }
94
95 data_network:
96 type: OS::Neutron::Net
97 data_subnet:
98 type: OS::Neutron::Subnet
99 properties:
100 network: { get_resource: data_network }
101 enable_dhcp: false
102 cidr: { get_param: data_network_cidr }
Anton Samoylov02a217c2024-10-08 13:54:07 +0400103 gateway_ip: ~
Anton Samoylove2e969e2024-10-03 15:28:31 +0400104
Anton Samoylov17e7c032024-10-14 23:55:18 +0400105 storage_backend_network:
106 type: OS::Neutron::Net
107 storage_backend_subnet:
108 type: OS::Neutron::Subnet
109 properties:
110 network: { get_resource: storage_backend_network }
111 enable_dhcp: false
112 cidr: { get_param: storage_backend_network_cidr }
113 gateway_ip: ~
114
115 storage_frontend_network:
116 type: OS::Neutron::Net
117 storage_frontend_subnet:
118 type: OS::Neutron::Subnet
119 properties:
120 network: { get_resource: storage_frontend_network }
121 enable_dhcp: false
122 cidr: { get_param: storage_frontend_network_cidr }
123 gateway_ip: ~
124
Anton Samoylove2e969e2024-10-03 15:28:31 +0400125 masters:
126 type: OS::Heat::ResourceGroup
127 depends_on:
128 - k8s_network
129 - data_network
130 - public_router_iface
131 properties:
132 count: { get_param: controllers_size }
133 resource_def:
134 type: VMInstances
135 properties:
Anton Samoylove2e969e2024-10-03 15:28:31 +0400136 k8s_network: { get_resource: k8s_network }
137 k8s_subnet_id: { get_resource: k8s_subnet }
138 public_net_id: { get_param: public_net_id }
Anton Samoylov17e7c032024-10-14 23:55:18 +0400139 storage_frontend_network: { get_resource: storage_frontend_network }
Anton Samoylove2e969e2024-10-03 15:28:31 +0400140 data_network: { get_resource: data_network }
141 availability_zone: { get_param: availability_zone }
142 image: { get_param: image }
143 flavor: { get_param: masters_flavor }
144 key_name: { get_attr: [keypair_name, value] }
Anton Samoylov17e7c032024-10-14 23:55:18 +0400145 boot_timeout: { get_param: boot_timeout }
Anton Samoylove2e969e2024-10-03 15:28:31 +0400146
147 workers:
148 type: OS::Heat::ResourceGroup
149 depends_on:
150 - k8s_network
151 - data_network
152 - public_router_iface
153 properties:
154 count: { get_param: workers_size }
155 resource_def:
Anton Samoylov17e7c032024-10-14 23:55:18 +0400156 type: VMInstancesCeph
Anton Samoylove2e969e2024-10-03 15:28:31 +0400157 properties:
Anton Samoylove2e969e2024-10-03 15:28:31 +0400158 k8s_network: { get_resource: k8s_network }
159 k8s_subnet_id: { get_resource: k8s_subnet }
160 public_net_id: { get_param: public_net_id }
Anton Samoylov17e7c032024-10-14 23:55:18 +0400161 storage_frontend_network: { get_resource: storage_frontend_network }
162 storage_backend_network: { get_resource: storage_backend_network }
Anton Samoylove2e969e2024-10-03 15:28:31 +0400163 data_network: { get_resource: data_network }
164 availability_zone: { get_param: availability_zone }
165 image: { get_param: image }
166 flavor: { get_param: workers_flavor }
167 key_name: { get_attr: [keypair_name, value] }
Anton Samoylov17e7c032024-10-14 23:55:18 +0400168 metadata: { get_param: worker_metadata }
169 hardware_metadata: { get_param: hardware_metadata}
170 boot_timeout: { get_param: boot_timeout }
Anton Samoylove2e969e2024-10-03 15:28:31 +0400171
172outputs:
173 masters_ips:
174 description: Public IP addresses of the deployed masters instances
175 value: { get_attr: [masters, server_public_ip] }
176 workers_ips:
177 description: Public IP addresses of the deployed worker instances
178 value: { get_attr: [workers, server_public_ip] }
Anton Samoylov17e7c032024-10-14 23:55:18 +0400179 storage_frontend_network_cidr:
180 description: Storage network which is used as clientNet in Ceph CR
181 value: { get_param: storage_frontend_network_cidr }
182 storage_backend_network_cidr:
183 description: Storage network which is used as clusterNet in Ceph CR
184 value: { get_param: storage_backend_network_cidr }
185 workers_wc_data:
186 description: Metadata from workers
187 value: { get_attr: [workers, wc_data] }