summaryrefslogtreecommitdiffstats
path: root/heat/vLB/dnsscaling_openstack.yaml
blob: 2e07ca8549900c42a39347b010197f6016be301a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

@media only all and (prefers-color-scheme: dark) {
.highlight .hll { background-color: #49483e }
.highlight .c { color: #75715e } /* Comment */
.highlight .err { color: #960050; background-color: #1e0010 } /* Error */
.highlight .k { color: #66d9ef } /* Keyword */
.highlight .l { color: #ae81ff } /* Literal */
.highlight .n { color: #f8f8f2 } /* Name */
.highlight .o { color: #f92672 } /* Operator */
.highlight .p { color: #f8f8f2 } /* Punctuation */
.highlight .ch { color: #75715e } /* Comment.Hashbang */
.highlight .cm { color: #75715e } /* Comment.Multiline */
.highlight .cp { color: #75715e } /* Comment.Preproc */
.highlight .cpf { color: #75715e } /* Comment.PreprocFile */
.highlight .c1 { color: #75715e } /* Comment.Single */
.highlight .cs { color: #75715e } /* Comment.Special */
.highlight .gd { color: #f92672 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gi { color: #a6e22e } /* Generic.Inserted */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #75715e } /* Generic.Subheading */
.highlight .kc { color: #66d9ef } /* Keyword.Constant */
.highlight .kd { color: #66d9ef } /* Keyword.Declaration */
.highlight .kn { color: #f92672 } /* Keyword.Namespace */
.highlight .kp { color: #66d9ef } /* Keyword.Pseudo */
.highlight .kr { color: #66d9ef } /* Keyword.Reserved */
.highlight .kt { color: #66d9ef } /* Keyword.Type */
.highlight .ld { color: #e6db74 } /* Literal.Date */
.highlight .m { color: #ae81ff } /* Literal.Number */
.highlight .s { color: #e6db74 } /* Literal.String */
.highlight .na { color: #a6e22e } /* Name.Attribute */
.highlight .nb { color: #f8f8f2 } /* Name.Builtin */
.highlight .nc { color: #a6e22e } /* Name.Class */
.highlight .no { color: #66d9ef } /* Name.Constant */
.highlight .nd { color: #a6e22e } /* Name.Decorator */
.highlight .ni { color: #f8f8f2 } /* Name.Entity */
.highlight .ne { color: #a6e22e } /* Name.Exception */
.highlight .nf { color: #a6e22e } /* Name.Function */
.highlight .nl { color: #f8f8f2 } /* Name.Label */
.highlight .nn { color: #f8f8f2 } /* Name.Namespace */
.highlight .nx { color: #a6e22e } /* Name.Other */
.highlight .py { color: #f8f8f2 } /* Name.Property */
.highlight .nt { color: #f92672 } /* Name.Tag */
.highlight .nv { color: #f8f8f2 } /* Name.Variable */
.highlight .ow { color: #f92672 } /* Operator.Word */
.highlight .w { color: #f8f8f2 } /* Text.Whitespace */
.highlight .mb { color: #ae81ff } /* Literal.Number.Bin */
.highlight .mf { color: #ae81ff } /* Literal.Number.Float */
.highlight .mh { color: #ae81ff } /* Literal.Number.Hex */
.highlight .mi { color: #ae81ff } /* Literal.Number.Integer */
.highlight .mo { color: #ae81ff } /* Literal.Number.Oct */
.highlight .sa { color: #e6db74 } /* Literal.String.Affix */
.highlight .sb { color: #e6db74 } /* Literal.String.Backtick */
.highlight .sc { color: #e6db74 } /* Literal.String.Char */
.highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */
.highlight .sd { color: #e6db74 } /* Literal.String.Doc */
.highlight .s2 { color: #e6db74 } /* Literal.String.Double */
.highlight .se { color: #ae81ff } /* Literal.String.Escape */
.highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */
.highlight .si { color: #e6db74 } /* Literal.Str
##########################################################################
#
#==================LICENSE_START==========================================
# 
#
# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#        http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#==================LICENSE_END============================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
#
##########################################################################

heat_template_version: 2013-05-23

description: Heat template to deploy a vDNS for ONAP (scaling-up scenario)

##############
#            #
# PARAMETERS #
#            #
##############

parameters:
  vlb_image_name:
    type: string
    label: Image name or ID
    description: Image to be used for compute instance
  vlb_flavor_name:
    type: string
    label: Flavor
    description: Type of instance (flavor) to be used
  public_net_id:
    type: string
    label: Public network name or ID
    description: Public network that enables remote connection to VNF
  vlb_private_net_id:
    type: string
    label: vLoadBalancer private network name or ID
    description: Private network that connects vLoadBalancer with vDNSs
  onap_private_net_id:
    type: string
    label: ONAP management network name or ID
    description: Private network that connects ONAP component and the VNF
  onap_private_subnet_id:
    type: string
    label: ONAP management sub-network name or ID
    description: Private sub-network that connects ONAP component and the VNF
  vlb_private_net_cidr:
    type: string
    label: vLoadBalancer private network CIDR
    description: The CIDR of the vLoadBalancer private network
  onap_private_net_cidr:
    type: string
    label: ONAP private network CIDR
    description: The CIDR of the protected private network
  vlb_private_ip_0:
    type: string
    label: vLoadBalancer private IP address towards the private network
    description: Private IP address that is assigned to the vLoadBalancer to communicate with the vDNSs
  vlb_private_ip_1:
    type: string
    label: vLoadBalancer private IP address towards the ONAP management network
    description: Private IP address that is assigned to the vLoadBalancer to communicate with ONAP components
  vdns_private_ip_0:
    type: string
    label: vDNS private IP address towards the private network
    description: Private IP address that is assigned to the vDNS to communicate with the vLoadBalancer
  vdns_private_ip_1:
    type: string
    label: vDNS private IP address towards the ONAP management network
    description: Private IP address that is assigned to the vDNS to communicate with ONAP components
  vdns_name_0:
    type: string
    label: vDNS name
    description: Name of the vDNS
  vnf_id:
    type: string
    label: VNF ID
    description: The VNF ID is provided by ONAP
  vf_module_id:
    type: string
    label: vFirewall module ID
    description: The vLoadBalancer Module ID is provided by ONAP
  key_name:
    type: string
    label: Key pair name
    description: Public/Private key pair name
  pub_key:
    type: string
    label: Public key
    description: Public key to be installed on the compute instance
  repo_url_blob:
    type: string
    label: Repository URL
    description: URL of the repository that hosts the demo packages
  repo_url_artifacts:
    type: string
    label: Repository URL
    description: URL of the repository that hosts the demo packages
  install_script_version:
    type: string
    label: Installation script version number
    description: Version number of the scripts that install the vFW demo app
  demo_artifacts_version:
    type: string
    label: Artifacts version used in demo vnfs
    description: Artifacts (jar, tar.gz) version used in demo vnfs
  cloud_env:
    type: string
    label: Cloud environment
    description: Cloud environment (e.g., openstack, rackspace)

#############
#           #
# RESOURCES #
#           #
#############

resources:

  random-str:
    type: OS::Heat::RandomString
    properties:
      length: 4

  my_keypair:
    type: OS::Nova::KeyPair
    properties:
      name:
        str_replace:
          template: base_rand
          params:
            base: { get_param: key_name }
            rand: { get_resource: random-str }
      public_key: { get_param: pub_key }
      save_private_key: false

  vdns_private_0_port:
    type: OS::Neutron::Port
    properties:
      network: { get_param: vlb_private_net_id }
      fixed_ips: [{"subnet": { get_param: vlb_private_net_id }, "ip_address": { get_param: vdns_private_ip_0 }}]

  vdns_private_1_port:
    type: OS::Neutron::Port
    properties:
      network: { get_param: onap_private_net_id }
      fixed_ips: [{"subnet": { get_param: onap_private_subnet_id }, "ip_address": { get_param: vdns_private_ip_1 }}]

  vdns_0:
    type: OS::Nova::Server
    properties:
      image: { get_param: vlb_image_name }
      flavor: { get_param: vlb_flavor_name }
      name: { get_param: vdns_name_0 }
      key_name: { get_resource: my_keypair }
      networks:
        - network: { get_param: public_net_id }
        - port: { get_resource: vdns_private_0_port }
        - port: { get_resource: vdns_private_1_port }
      metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}
      user_data_format: RAW
      user_data:
        str_replace:
          params:
            __lb_oam_int__: { get_param: vlb_private_ip_1 }
            __lb_private_ipaddr__: { get_param: vlb_private_ip_0 }
            __local_private_ipaddr__: { get_param: vdns_private_ip_0 }
            __oam_private_ipaddr__: { get_param: vdns_private_ip_1 }
            __repo_url_blob__: { get_param: repo_url_blob }
            __repo_url_artifacts__: { get_param: repo_url_artifacts }
            __demo_artifacts_version__: { get_param: demo_artifacts_version }
            __install_script_version__: { get_param: install_script_version }
            __vlb_private_net_cidr__: { get_param: vlb_private_net_cidr }
            __onap_private_net_cidr__: { get_param: onap_private_net_cidr }
            __cloud_env__: { get_param: cloud_env }
          template: |
            #!/bin/bash

            # Create configuration files
            mkdir /opt/config
            echo "__lb_oam_int__" > /opt/config/lb_oam_int.txt
            echo "__lb_private_ipaddr__" > /opt/config/lb_private_ipaddr.txt
            echo "__local_private_ipaddr__" > /opt/config/local_private_ipaddr.txt
            echo "__oam_private_ipaddr__" > /opt/config/oam_private_ipaddr.txt
            echo "__repo_url_blob__" > /opt/config/repo_url_blob.txt
            echo "__repo_url_artifacts__" > /opt/config/repo_url_artifacts.txt
            echo "__demo_artifacts_version__" > /opt/config/demo_artifacts_version.txt
            echo "__install_script_version__" > /opt/config/install_script_version.txt
            echo "__vlb_private_net_cidr__" > /opt/config/vlb_private_net_cidr.txt
            echo "__onap_private_net_cidr__" > /opt/config/onap_private_net_cidr.txt
            echo "__cloud_env__" > /opt/config/cloud_env.txt

            # Download and run install script
            curl -k __repo_url_blob__/org.openecomp.demo/vnfs/vlb/__install_script_version__/v_dns_install.sh -o /opt/v_dns_install.sh
            cd /opt
            chmod +x v_dns_install.sh
            ./v_dns_install.sh