blob: c41b050925f54f610c4ea15a4042b30342d8071f [file] [log] [blame]
DR695H96c1f6f2017-08-17 17:13:48 -04001# Project Clearwater - IMS in the Cloud
2# Copyright (C) 2015 Metaswitch Networks Ltd
3#
4# This program is free software: you can redistribute it and/or modify it
5# under the terms of the GNU General Public License as published by the
6# Free Software Foundation, either version 3 of the License, or (at your
7# option) any later version, along with the "Special Exception" for use of
8# the program along with SSL, set forth below. This program is distributed
9# in the hope that it will be useful, but WITHOUT ANY WARRANTY;
10# without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11# A PARTICULAR PURPOSE. See the GNU General Public License for more
12# details. You should have received a copy of the GNU General Public
13# License along with this program. If not, see
14# <http://www.gnu.org/licenses/>.
15#
16# The author can be reached by email at clearwater@metaswitch.com or by
17# post at Metaswitch Networks Ltd, 100 Church St, Enfield EN2 6BQ, UK
18#
19# Special Exception
20# Metaswitch Networks Ltd grants you permission to copy, modify,
21# propagate, and distribute a work formed by combining OpenSSL with The
22# Software, or a work derivative of such a combination, even if such
23# copying, modification, propagation, or distribution would otherwise
24# violate the terms of the GPL. You must comply with the GPL in all
25# respects for all of the code used other than OpenSSL.
26# "OpenSSL" means OpenSSL toolkit software distributed by the OpenSSL
27# Project and licensed under the OpenSSL Licenses, or a work based on such
28# software and licensed under the OpenSSL Licenses.
29# "OpenSSL Licenses" means the OpenSSL License and Original SSLeay License
30# under which the OpenSSL Project distributes the OpenSSL toolkit software,
31# as those licenses appear in the file LICENSE-OPENSSL.
32
33heat_template_version: 2013-05-23
34
35description: >
36 Base Project Clearwater deployment on ONAP (Open Network Automation Platform)
37
38parameters:
39 vnf_id:
40 type: string
41 label: VNF ID
42 description: The VNF ID provided by ONAP
43 vf_module_id:
44 type: string
45 label: VNF module ID
46 description: The VNF module ID provided by ONAP
47 public_net_id:
48 type: string
49 description: ID of public network
50 constraints:
51 - custom_constraint: neutron.network
52 description: Must be a valid network ID
53 bono_flavor_name:
54 type: string
55 description: VM flavor for bono VMs
56 constraints:
57 - custom_constraint: nova.flavor
58 description: Must be a valid flavor name
59 sprout_flavor_name:
60 type: string
61 description: VM flavor for sprout VMs
62 constraints:
63 - custom_constraint: nova.flavor
64 description: Must be a valid flavor name
65 homestead_flavor_name:
66 type: string
67 description: VM flavor for homestead VMs
68 constraints:
69 - custom_constraint: nova.flavor
70 description: Must be a valid flavor name
71 homer_flavor_name:
72 type: string
73 description: VM flavor for homer VMs
74 constraints:
75 - custom_constraint: nova.flavor
76 description: Must be a valid flavor name
77 ralf_flavor_name:
78 type: string
79 description: VM flavor for ralf VMs
80 constraints:
81 - custom_constraint: nova.flavor
82 description: Must be a valid flavor name
83 ellis_flavor_name:
84 type: string
85 description: VM flavor for ellis VM
86 constraints:
87 - custom_constraint: nova.flavor
88 description: Must be a valid flavor name
89 dns_flavor_name:
90 type: string
91 description: VM flavor for dns VM
92 constraints:
93 - custom_constraint: nova.flavor
94 description: Must be a valid flavor name
95 bono_image_name:
96 type: string
97 description: Name of image for bono VMs
98 sprout_image_name:
99 type: string
100 description: Name of image for sprout VMs
101 homestead_image_name:
102 type: string
103 description: Name of image for homestead VMs
104 homer_image_name:
105 type: string
106 description: Name of image for homer VMs
107 ralf_image_name:
108 type: string
109 description: Name of image for ralf VMs
110 ellis_image_name:
111 type: string
112 description: Name of image for ellis VM
113 dns_image_name:
114 type: string
115 description: Name of image for dns VMs
116 key_name:
117 type: string
118 description: Name of keypair to create
119 pub_key:
120 type: string
121 label: Public key
122 description: Public key to be installed on all compute instances
123 repo_url:
124 type: string
125 description: URL for Clearwater repository
126 default: http://repo.cw-ngv.com/stable
127 zone:
128 type: string
129 description: DNS zone
130 default: example.com
131 dn_range_start:
132 type: string
133 description: First directory number in pool
134 default: "6505550000"
135 constraints:
136 - allowed_pattern: "[0-9]+"
137 description: Must be numeric
138 dn_range_length:
139 type: string
140 description: Number of directory numbers to add to pool
141 default: "1000"
142 constraints:
143 - allowed_pattern: "[0-9]+"
144 description: Must be numeric
145 dnssec_key:
146 type: string
147 description: DNSSEC private key (Base64-encoded)
148 constraints:
149 - allowed_pattern: "[0-9A-Za-z+/=]+"
150 description: Must be Base64-encoded
151
152resources:
153 cw_keypair:
154 type: OS::Nova::KeyPair
155 properties:
156 name: { get_param: key_name }
157 public_key: { get_param: pub_key }
158 save_private_key: false
159
160# security_groups:
161# type: security-groups.yaml
162# properties:
163# name_prefix: { get_param: "OS::stack_name" }
164
165 dns:
166 type: dns.yaml
167 properties:
168 vnf_id: { get_param: vnf_id }
169 vf_module_id: { get_param: vf_module_id }
170 public_net_id: { get_param: public_net_id }
171 dns_flavor_name: { get_param: dns_flavor_name }
172 dns_image_name: { get_param: dns_image_name }
173 key_name: { get_resource: cw_keypair }
174# dns_security_group: { get_attr: [ security_groups, dns ] }
175 zone: { get_param: zone }
176 dnssec_key: { get_param: dnssec_key }
177
178
179 ellis:
180 type: ellis.yaml
181 properties:
182 vnf_id: { get_param: vnf_id }
183 vf_module_id: { get_param: vf_module_id }
184 public_net_id: { get_param: public_net_id }
185 ellis_flavor_name: { get_param: ellis_flavor_name }
186 ellis_image_name: { get_param: ellis_image_name }
187 key_name: { get_resource: cw_keypair }
188# base_mgmt_security_group: { get_attr: [ security_groups, base_mgmt ] }
189# ellis_mgmt_security_group: { get_attr: [ security_groups, ellis_mgmt ] }
190 repo_url: { get_param: repo_url }
191 zone: { get_param: zone }
192 dn_range_start: { get_param: dn_range_start }
193 dn_range_length: { get_param: dn_range_length }
194 dns_ip: { get_attr: [ dns, dns_ip ] }
195 dnssec_key: { get_param: dnssec_key }
196
197 bono:
198 type: OS::Heat::ResourceGroup
199 properties:
200 count: 2
201 index_var: "__index__"
202 resource_def:
203 type: bono.yaml
204 properties:
205 vnf_id: { get_param: vnf_id }
206 vf_module_id: { get_param: vf_module_id }
207 public_net_id: { get_param: public_net_id }
208 bono_flavor_name: { get_param: bono_flavor_name }
209 bono_image_name: { get_param: bono_image_name }
210 key_name: { get_resource: cw_keypair }
211# base_mgmt_security_group: { get_attr: [ security_groups, base_mgmt ] }
212# bono_sig_security_group: { get_attr: [ security_groups, bono_sig ] }
213 repo_url: { get_param: repo_url }
214 zone: { get_param: zone }
215 dns_ip: { get_attr: [ dns, dns_ip ] }
216 dnssec_key: { get_param: dnssec_key }
217 etcd_ip: { get_attr: [ ellis, public_ip ] }
218 index: __index__
219
220 sprout:
221 type: OS::Heat::ResourceGroup
222 properties:
223 count: 2
224 index_var: __index__
225 resource_def:
226 type: sprout.yaml
227 properties:
228 vnf_id: { get_param: vnf_id }
229 vf_module_id: { get_param: vf_module_id }
230 public_net_id: { get_param: public_net_id }
231 sprout_flavor_name: { get_param: sprout_flavor_name }
232 sprout_image_name: { get_param: sprout_image_name }
233 key_name: { get_resource: cw_keypair }
234# base_mgmt_security_group: { get_attr: [ security_groups, base_mgmt ] }
235# sprout_sig_security_group: { get_attr: [ security_groups, sprout_sig ] }
236# sprout_sig2_security_group: { get_attr: [ security_groups, sprout_sig2 ] }
237 repo_url: { get_param: repo_url }
238 zone: { get_param: zone }
239 dns_ip: { get_attr: [ dns, dns_ip ] }
240 dnssec_key: { get_param: dnssec_key }
241 etcd_ip: { get_attr: [ ellis, public_ip ] }
242 index: __index__
243
244 homer:
245 type: OS::Heat::ResourceGroup
246 properties:
247 count: 2
248 index_var: __index__
249 resource_def:
250 type: homer.yaml
251 properties:
252 vnf_id: { get_param: vnf_id }
253 vf_module_id: { get_param: vf_module_id }
254 public_net_id: { get_param: public_net_id }
255 homer_flavor_name: { get_param: homer_flavor_name }
256 homer_image_name: { get_param: homer_image_name }
257 key_name: { get_resource: cw_keypair }
258# base_mgmt_security_group: { get_attr: [ security_groups, base_mgmt ] }
259# homer_mgmt_security_group: { get_attr: [ security_groups, homer_mgmt ] }
260# homer_sig_security_group: { get_attr: [ security_groups, homer_sig ] }
261 repo_url: { get_param: repo_url }
262 zone: { get_param: zone }
263 dns_ip: { get_attr: [ dns, dns_ip ] }
264 dnssec_key: { get_param: dnssec_key }
265 etcd_ip: { get_attr: [ ellis, public_ip ] }
266 index: __index__
267
268 homestead:
269 type: OS::Heat::ResourceGroup
270 properties:
271 count: 2
272 index_var: __index__
273 resource_def:
274 type: homestead.yaml
275 properties:
276 vnf_id: { get_param: vnf_id }
277 vf_module_id: { get_param: vf_module_id }
278 public_net_id: { get_param: public_net_id }
279 homestead_flavor_name: { get_param: homestead_flavor_name }
280 homestead_image_name: { get_param: homestead_image_name }
281 key_name: { get_resource: cw_keypair }
282# base_mgmt_security_group: { get_attr: [ security_groups, base_mgmt ] }
283# homestead_mgmt_security_group: { get_attr: [ security_groups, homestead_mgmt ] }
284# homestead_sig_security_group: { get_attr: [ security_groups, homestead_sig ] }
285 repo_url: { get_param: repo_url }
286 zone: { get_param: zone }
287 dns_ip: { get_attr: [ dns, dns_ip ] }
288 dnssec_key: { get_param: dnssec_key }
289 etcd_ip: { get_attr: [ ellis, public_ip ] }
290 index: __index__
291
292 ralf:
293 type: OS::Heat::ResourceGroup
294 properties:
295 count: 2
296 index_var: __index__
297 resource_def:
298 type: ralf.yaml
299 properties:
300 vnf_id: { get_param: vnf_id }
301 vf_module_id: { get_param: vf_module_id }
302 public_net_id: { get_param: public_net_id }
303 ralf_flavor_name: { get_param: ralf_flavor_name }
304 ralf_image_name: { get_param: ralf_image_name }
305 key_name: { get_resource: cw_keypair }
306# base_mgmt_security_group: { get_attr: [ security_groups, base_mgmt ] }
307# ralf_sig_security_group: { get_attr: [ security_groups, ralf_sig ] }
308 repo_url: { get_param: repo_url }
309 zone: { get_param: zone }
310 dns_ip: { get_attr: [ dns, dns_ip ] }
311 dnssec_key: { get_param: dnssec_key }
312 etcd_ip: { get_attr: [ ellis, public_ip ] }
313 index: __index__
314
315outputs:
316 zone:
317 description: DNS zone
318 value: { get_param: zone }
319 dns_ip:
320 description: IP address of DNS
321 value: { get_attr: [ dns, dns_ip ] }
322