blob: 856df1a484b58b182cdd991f615ccf44e6225f91 [file] [log] [blame]
Jerry Floodc8bd4272017-10-19 13:43:43 -04001##########################################################################
2#
3#==================LICENSE_START==========================================
4#
5#
6# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
7#
8# Licensed under the Apache License, Version 2.0 (the "License");
9# you may not use this file except in compliance with the License.
10# You may obtain a copy of the License at
11# http://www.apache.org/licenses/LICENSE-2.0
12#
13# Unless required by applicable law or agreed to in writing, software
14# distributed under the License is distributed on an "AS IS" BASIS,
15# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16# See the License for the specific language governing permissions and
17# limitations under the License.
18#
19#==================LICENSE_END============================================
20#
21# ECOMP is a trademark and service mark of AT&T Intellectual Property.
22#
23##########################################################################
24
DR695Hccff30b2017-02-17 18:44:24 -050025heat_template_version: 2013-05-23
26
Jerry Floodc8bd4272017-10-19 13:43:43 -040027description: Heat template to deploy a vDNS for ONAP (scaling-up scenario)
28
29##############
30# #
31# PARAMETERS #
32# #
33##############
DR695Hccff30b2017-02-17 18:44:24 -050034
35parameters:
36 vlb_image_name:
37 type: string
38 label: Image name or ID
39 description: Image to be used for compute instance
40 vlb_flavor_name:
41 type: string
42 label: Flavor
43 description: Type of instance (flavor) to be used
44 public_net_id:
45 type: string
46 label: Public network name or ID
47 description: Public network that enables remote connection to VNF
48 vlb_private_net_id:
49 type: string
50 label: vLoadBalancer private network name or ID
51 description: Private network that connects vLoadBalancer with vDNSs
Jerry Floodc8bd4272017-10-19 13:43:43 -040052 onap_private_net_id:
DR695Hccff30b2017-02-17 18:44:24 -050053 type: string
Jerry Floodc8bd4272017-10-19 13:43:43 -040054 label: ONAP management network name or ID
55 description: Private network that connects ONAP component and the VNF
56 onap_private_subnet_id:
DR695Hccff30b2017-02-17 18:44:24 -050057 type: string
Jerry Floodc8bd4272017-10-19 13:43:43 -040058 label: ONAP management sub-network name or ID
59 description: Private sub-network that connects ONAP component and the VNF
60 vlb_private_net_cidr:
61 type: string
62 label: vLoadBalancer private network CIDR
63 description: The CIDR of the vLoadBalancer private network
64 onap_private_net_cidr:
65 type: string
66 label: ONAP private network CIDR
67 description: The CIDR of the protected private network
DR695Hccff30b2017-02-17 18:44:24 -050068 vlb_private_ip_0:
69 type: string
70 label: vLoadBalancer private IP address towards the private network
71 description: Private IP address that is assigned to the vLoadBalancer to communicate with the vDNSs
72 vlb_private_ip_1:
73 type: string
Jerry Floodc8bd4272017-10-19 13:43:43 -040074 label: vLoadBalancer private IP address towards the ONAP management network
75 description: Private IP address that is assigned to the vLoadBalancer to communicate with ONAP components
DR695Hccff30b2017-02-17 18:44:24 -050076 vdns_private_ip_0:
77 type: string
78 label: vDNS private IP address towards the private network
79 description: Private IP address that is assigned to the vDNS to communicate with the vLoadBalancer
80 vdns_private_ip_1:
81 type: string
Jerry Floodc8bd4272017-10-19 13:43:43 -040082 label: vDNS private IP address towards the ONAP management network
83 description: Private IP address that is assigned to the vDNS to communicate with ONAP components
DR695Hccff30b2017-02-17 18:44:24 -050084 vdns_name_0:
85 type: string
86 label: vDNS name
87 description: Name of the vDNS
88 vnf_id:
89 type: string
90 label: VNF ID
Jerry Floodc8bd4272017-10-19 13:43:43 -040091 description: The VNF ID is provided by ONAP
DR695Hccff30b2017-02-17 18:44:24 -050092 vf_module_id:
93 type: string
94 label: vFirewall module ID
Jerry Floodc8bd4272017-10-19 13:43:43 -040095 description: The vLoadBalancer Module ID is provided by ONAP
DR695Hccff30b2017-02-17 18:44:24 -050096 key_name:
97 type: string
98 label: Key pair name
99 description: Public/Private key pair name
100 pub_key:
101 type: string
102 label: Public key
103 description: Public key to be installed on the compute instance
jf98609ab26342017-02-28 15:07:36 -0500104 repo_url_blob:
DR695Hccff30b2017-02-17 18:44:24 -0500105 type: string
106 label: Repository URL
107 description: URL of the repository that hosts the demo packages
jf98609ab26342017-02-28 15:07:36 -0500108 repo_url_artifacts:
109 type: string
110 label: Repository URL
111 description: URL of the repository that hosts the demo packages
Jerry Floodc8bd4272017-10-19 13:43:43 -0400112 install_script_version:
113 type: string
114 label: Installation script version number
115 description: Version number of the scripts that install the vFW demo app
jf98609ab26342017-02-28 15:07:36 -0500116 demo_artifacts_version:
117 type: string
118 label: Artifacts version used in demo vnfs
119 description: Artifacts (jar, tar.gz) version used in demo vnfs
Jerry Floodc8bd4272017-10-19 13:43:43 -0400120 cloud_env:
121 type: string
122 label: Cloud environment
123 description: Cloud environment (e.g., openstack, rackspace)
124
125#############
126# #
127# RESOURCES #
128# #
129#############
DR695Hccff30b2017-02-17 18:44:24 -0500130
131resources:
jf98609ab26342017-02-28 15:07:36 -0500132
133 random-str:
134 type: OS::Heat::RandomString
135 properties:
136 length: 4
137
138 my_keypair:
139 type: OS::Nova::KeyPair
140 properties:
141 name:
142 str_replace:
143 template: base_rand
144 params:
145 base: { get_param: key_name }
146 rand: { get_resource: random-str }
147 public_key: { get_param: pub_key }
148 save_private_key: false
149
Jerry Floodc8bd4272017-10-19 13:43:43 -0400150 vdns_2_private_0_port:
151 type: OS::Neutron::Port
152 properties:
153 network: { get_param: vlb_private_net_id }
154 fixed_ips: [{"subnet": { get_param: vlb_private_net_id }, "ip_address": { get_param: vdns_private_ip_0 }}]
155
156 vdns_2_private_1_port:
157 type: OS::Neutron::Port
158 properties:
159 network: { get_param: onap_private_net_id }
160 fixed_ips: [{"subnet": { get_param: onap_private_subnet_id }, "ip_address": { get_param: vdns_private_ip_1 }}]
161
162 vdns_2:
DR695Hccff30b2017-02-17 18:44:24 -0500163 type: OS::Nova::Server
164 properties:
165 image: { get_param: vlb_image_name }
166 flavor: { get_param: vlb_flavor_name }
167 name: { get_param: vdns_name_0 }
jf98609ab26342017-02-28 15:07:36 -0500168 key_name: { get_resource: my_keypair }
DR695Hccff30b2017-02-17 18:44:24 -0500169 networks:
170 - network: { get_param: public_net_id }
Jerry Floodc8bd4272017-10-19 13:43:43 -0400171 - port: { get_resource: vdns_2_private_0_port }
172 - port: { get_resource: vdns_2_private_1_port }
DR695Hccff30b2017-02-17 18:44:24 -0500173 metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}
174 user_data_format: RAW
175 user_data:
176 str_replace:
177 params:
Jerry Floodc8bd4272017-10-19 13:43:43 -0400178 __lb_oam_int__: { get_param: vlb_private_ip_1 }
DR695Hccff30b2017-02-17 18:44:24 -0500179 __lb_private_ipaddr__: { get_param: vlb_private_ip_0 }
180 __local_private_ipaddr__: { get_param: vdns_private_ip_0 }
Jerry Floodc8bd4272017-10-19 13:43:43 -0400181 __oam_private_ipaddr__: { get_param: vdns_private_ip_1 }
182 __repo_url_blob__: { get_param: repo_url_blob }
183 __repo_url_artifacts__: { get_param: repo_url_artifacts }
184 __demo_artifacts_version__: { get_param: demo_artifacts_version }
185 __install_script_version__: { get_param: install_script_version }
186 __vlb_private_net_cidr__: { get_param: vlb_private_net_cidr }
187 __onap_private_net_cidr__: { get_param: onap_private_net_cidr }
188 __cloud_env__: { get_param: cloud_env }
DR695Hccff30b2017-02-17 18:44:24 -0500189 template: |
190 #!/bin/bash
191
Jerry Floodc8bd4272017-10-19 13:43:43 -0400192 # Create configuration files
Jerry Flood3fc36a32017-10-11 11:09:19 -0400193 mkdir /opt/config
Jerry Floodc8bd4272017-10-19 13:43:43 -0400194 echo "__lb_oam_int__" > /opt/config/lb_oam_int.txt
195 echo "__lb_private_ipaddr__" > /opt/config/lb_private_ipaddr.txt
196 echo "__local_private_ipaddr__" > /opt/config/local_private_ipaddr.txt
197 echo "__oam_private_ipaddr__" > /opt/config/oam_private_ipaddr.txt
198 echo "__repo_url_blob__" > /opt/config/repo_url_blob.txt
199 echo "__repo_url_artifacts__" > /opt/config/repo_url_artifacts.txt
200 echo "__demo_artifacts_version__" > /opt/config/demo_artifacts_version.txt
201 echo "__install_script_version__" > /opt/config/install_script_version.txt
202 echo "__vlb_private_net_cidr__" > /opt/config/vlb_private_net_cidr.txt
203 echo "__onap_private_net_cidr__" > /opt/config/onap_private_net_cidr.txt
204 echo "__cloud_env__" > /opt/config/cloud_env.txt
205
206 # Download and run install script
207 curl -k __repo_url_blob__/org.onap.demo/vnfs/vlb/__install_script_version__/v_dns_install.sh -o /opt/v_dns_install.sh
DR695Hccff30b2017-02-17 18:44:24 -0500208 cd /opt
Jerry Floodc8bd4272017-10-19 13:43:43 -0400209 chmod +x v_dns_install.sh
210 ./v_dns_install.sh