DR695H | 96c1f6f | 2017-08-17 17:13:48 -0400 | [diff] [blame] | 1 | # 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 | |
| 33 | heat_template_version: 2013-05-23 |
| 34 | |
| 35 | description: > |
| 36 | Base Project Clearwater deployment on ONAP (Open Network Automation Platform) |
| 37 | |
| 38 | parameters: |
| 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 | |
| 152 | resources: |
| 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 | |
| 315 | outputs: |
| 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 | |