From 1bdfcff9b394e9cc40868c13d2aa6a5e8c7f4a98 Mon Sep 17 00:00:00 2001 From: Mariah Jacobs Date: Tue, 7 Aug 2018 08:18:28 -0700 Subject: Refactor vCPE vBRG and vBNG image creation process Separate templates and build scripts have been created for vBRG and vBNG. Build logic and parameters are removed from install scripts and base heat/env files used to deploy the VMs. For backwards compatibility, compile_state parameter was added to both VMs. Small corrections were made to the heat templates for clarity. Issue-ID: INT-615 Change-Id: Ia171994d2f4e17523f319b0a048d77fec29e487b Signed-off-by: Mariah Jacobs --- heat/vCPE/vbng/base_vcpe_vbng.env | 6 +- heat/vCPE/vbng/base_vcpe_vbng.yaml | 38 +++----- heat/vCPE/vbng/build_vcpe_vbng.env | 17 ++++ heat/vCPE/vbng/build_vcpe_vbng.yaml | 176 ++++++++++++++++++++++++++++++++++++ 4 files changed, 206 insertions(+), 31 deletions(-) create mode 100644 heat/vCPE/vbng/build_vcpe_vbng.env create mode 100644 heat/vCPE/vbng/build_vcpe_vbng.yaml (limited to 'heat/vCPE/vbng') diff --git a/heat/vCPE/vbng/base_vcpe_vbng.env b/heat/vCPE/vbng/base_vcpe_vbng.env index be6e08dd..6d860adb 100644 --- a/heat/vCPE/vbng/base_vcpe_vbng.env +++ b/heat/vCPE/vbng/base_vcpe_vbng.env @@ -1,6 +1,7 @@ parameters: vcpe_image_name: PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED) vcpe_flavor_name: PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED) + compile_state: done public_net_id: PUT THE PUBLIC NETWORK ID HERE brgemu_bng_private_net_id: zdfw1bngin01_private brgemu_bng_private_subnet_id: zdfw1bngin01_sub_private @@ -26,10 +27,7 @@ dcae_collector_port: 8081 repo_url_artifacts: https://nexus.onap.org/content/repositories/staging demo_artifacts_version: 1.3.0 - install_script_version: 1.3.0-SNAPSHOT + script_version: 1.3.0-SNAPSHOT key_name: vbng_key pub_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQXYJYYi3/OUZXUiCYWdtc7K0m5C0dJKVxPG0eI8EWZrEHYdfYe6WoTSDJCww+1qlBSpA5ac/Ba4Wn9vh+lR1vtUKkyIC/nrYb90ReUd385Glkgzrfh5HdR5y5S2cL/Frh86lAn9r6b3iWTJD8wBwXFyoe1S2nMTOIuG4RPNvfmyCTYVh8XTCCE8HPvh3xv2r4egawG1P4Q4UDwk+hDBXThY2KS8M5/8EMyxHV0ImpLbpYCTBA6KYDIRtqmgS6iKyy8v2D1aSY5mc9J0T5t9S2Gv+VZQNWQDDKNFnxqYaAo1uEoq/i1q63XC5AD3ckXb2VT6dp23BQMdDfbHyUWfJN cloud_env: PUT THE CLOUD PROVIDED HERE (openstack or rackspace) - vpp_source_repo_url: https://gerrit.fd.io/r/vpp - vpp_source_repo_release_tag: v17.04 - vpp_patch_url: https://git.onap.org/demo/plain/vnfs/vCPE/vpp-radius-client-for-vbng/src/patches/Vpp-Integrate-FreeRADIUS-Client-for-vBNG.patch diff --git a/heat/vCPE/vbng/base_vcpe_vbng.yaml b/heat/vCPE/vbng/base_vcpe_vbng.yaml index aebf13f2..997e4c23 100644 --- a/heat/vCPE/vbng/base_vcpe_vbng.yaml +++ b/heat/vCPE/vbng/base_vcpe_vbng.yaml @@ -141,7 +141,7 @@ parameters: type: string label: Repository URL description: URL of the repository that hosts the demo packages - install_script_version: + script_version: type: string label: Installation script version number description: Version number of the scripts that install the vFW demo app @@ -157,26 +157,14 @@ parameters: type: string label: Cloud environment description: Cloud environment (e.g., openstack, rackspace) - vpp_source_repo_url: - type: string - label: VPP Source Git Repo - description: URL for VPP source codes - vpp_source_repo_release_tag: - type: string - label: VPP Source Git Release Tag - description: Git Release Tag for the VPP source codes - vpp_patch_url: - type: string - label: VPP Patch URL - description: URL for VPP patch for vBNG sdnc_ip_addr: type: string label: SDNC IP address description: IP address of the SDNC - nexus_artifact_repo: + compile_state: type: string - description: Root URL for the Nexus repository for Maven artifacts. - default: "https://nexus.onap.org" + label: Compile State + description: State to compile code or not; included for backwards compatibility ############# # # @@ -259,12 +247,10 @@ resources: __dcae_collector_port__: { get_param: dcae_collector_port } __repo_url_artifacts__ : { get_param: repo_url_artifacts } __demo_artifacts_version__ : { get_param: demo_artifacts_version } - __install_script_version__ : { get_param: install_script_version } + __script_version__ : { get_param: script_version } __cloud_env__ : { get_param: cloud_env } - __vpp_source_repo_url__ : { get_param: vpp_source_repo_url } - __vpp_source_repo_release_tag__ : { get_param: vpp_source_repo_release_tag } - __vpp_patch_url__ : { get_param: vpp_patch_url } __sdnc_ip_addr__: { get_param: sdnc_ip_addr } + __compile_state__ : { get_param: compile_state } __nexus_artifact_repo__: { get_param: nexus_artifact_repo } template: | #!/bin/bash @@ -283,19 +269,17 @@ resources: echo "__dcae_collector_port__" > /opt/config/dcae_collector_port.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 "__script_version__" > /opt/config/script_version.txt echo "__cloud_env__" > /opt/config/cloud_env.txt - echo "__vpp_source_repo_url__" > /opt/config/vpp_source_repo_url.txt - echo "__vpp_source_repo_release_tag__" > /opt/config/vpp_source_repo_release_tag.txt - echo "__vpp_patch_url__" > /opt/config/vpp_patch_url.txt echo "__sdnc_ip_addr__" > /opt/config/sdnc_ip_addr.txt + echo "__compile_state__" > /opt/config/compile_state.txt echo "__nexus_artifact_repo__" > /opt/config/nexus_artifact_repo.txt # Download and run install script apt-get -y install unzip - if [[ "__install_script_version__" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi - curl -k -L "__nexus_artifact_repo__/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=__install_script_version__" -o /opt/vcpe-scripts-__install_script_version__.zip - unzip -j /opt/vcpe-scripts-__install_script_version__.zip -d /opt v_bng_install.sh + if [[ "__script_version__" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi + curl -k -L "__nexus_artifact_repo__/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=__script_version__" -o /opt/vcpe-scripts-__script_version__.zip + unzip -j /opt/vcpe-scripts-__script_version__.zip -d /opt v_bng_install.sh cd /opt chmod +x v_bng_install.sh ./v_bng_install.sh diff --git a/heat/vCPE/vbng/build_vcpe_vbng.env b/heat/vCPE/vbng/build_vcpe_vbng.env new file mode 100644 index 00000000..b7e2de05 --- /dev/null +++ b/heat/vCPE/vbng/build_vcpe_vbng.env @@ -0,0 +1,17 @@ + parameters: + vcpe_image_name: PUT THE IMAGE NAME HERE (Ubuntu 1604 SUGGESTED) + vcpe_flavor_name: PUT THE FLAVOR NAME HERE (MEDIUM FLAVOR SUGGESTED) + compile_state: build + public_net_id: PUT THE PUBLIC NETWORK ID HERE + vbng_name_0: zdcpe1cpe01bng01 + vnf_id: vCPE_Infrastructure_Metro_vBNG_demo_app + vf_module_id: vCPE_Intrastructure_Metro_vBNG + repo_url_artifacts: https://nexus.onap.org/content/repositories/staging + demo_artifacts_version: 1.3.0 + script_version: 1.3.0-SNAPSHOT + key_name: vbng_key + pub_key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQXYJYYi3/OUZXUiCYWdtc7K0m5C0dJKVxPG0eI8EWZrEHYdfYe6WoTSDJCww+1qlBSpA5ac/Ba4Wn9vh+lR1vtUKkyIC/nrYb90ReUd385Glkgzrfh5HdR5y5S2cL/Frh86lAn9r6b3iWTJD8wBwXFyoe1S2nMTOIuG4RPNvfmyCTYVh8XTCCE8HPvh3xv2r4egawG1P4Q4UDwk+hDBXThY2KS8M5/8EMyxHV0ImpLbpYCTBA6KYDIRtqmgS6iKyy8v2D1aSY5mc9J0T5t9S2Gv+VZQNWQDDKNFnxqYaAo1uEoq/i1q63XC5AD3ckXb2VT6dp23BQMdDfbHyUWfJN + cloud_env: PUT THE CLOUD PROVIDED HERE (openstack or rackspace) + vpp_source_repo_url: https://gerrit.fd.io/r/vpp + vpp_source_repo_release_tag: v17.04 + vpp_patch_url: https://git.onap.org/demo/plain/vnfs/vCPE/vpp-radius-client-for-vbng/src/patches/Vpp-Integrate-FreeRADIUS-Client-for-vBNG.patch diff --git a/heat/vCPE/vbng/build_vcpe_vbng.yaml b/heat/vCPE/vbng/build_vcpe_vbng.yaml new file mode 100644 index 00000000..eb623f8a --- /dev/null +++ b/heat/vCPE/vbng/build_vcpe_vbng.yaml @@ -0,0 +1,176 @@ +########################################################################## +# +#==================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 build vCPE virtual Broadband Network Gateway (vBNG) + +############## +# # +# PARAMETERS # +# # +############## + +parameters: + vcpe_image_name: + type: string + label: Image name or ID + description: Image to be used for compute instance + vcpe_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 + vbng_name_0: + type: string + label: vBNG name + description: Name of the vBNG + vnf_id: + type: string + label: VNF ID + description: The VNF ID is provided by ONAP + vf_module_id: + type: string + label: vCPE module ID + description: The vCPE 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_artifacts: + type: string + label: Repository URL + description: URL of the repository that hosts the demo packages + script_version: + type: string + label: Build script version number + description: Version number of the scripts that build 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 + nexus_artifact_repo: + type: string + description: Root URL for the Nexus repository for Maven artifacts. + default: "https://nexus.onap.org" + cloud_env: + type: string + label: Cloud environment + description: Cloud environment (e.g., openstack, rackspace) + vpp_source_repo_url: + type: string + label: VPP Source Git Repo + description: URL for VPP source codes + vpp_source_repo_release_tag: + type: string + label: VPP Source Git Release Tag + description: Git Release Tag for the VPP source codes + vpp_patch_url: + type: string + label: VPP Patch URL + description: URL for VPP patch for vBNG + compile_state: + type: string + label: Compile State + description: State to compile code or not; included for backwards compatibility + +############# +# # +# 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 + + + vbng_0: + type: OS::Nova::Server + properties: + image: { get_param: vcpe_image_name } + flavor: { get_param: vcpe_flavor_name } + name: { get_param: vbng_name_0 } + key_name: { get_resource: my_keypair } + networks: + - network: { get_param: public_net_id } + metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }} + user_data_format: RAW + user_data: + str_replace: + params: + __repo_url_artifacts__ : { get_param: repo_url_artifacts } + __demo_artifacts_version__ : { get_param: demo_artifacts_version } + __script_version__ : { get_param: script_version } + __cloud_env__ : { get_param: cloud_env } + __vpp_source_repo_url__ : { get_param: vpp_source_repo_url } + __vpp_source_repo_release_tag__ : { get_param: vpp_source_repo_release_tag } + __vpp_patch_url__ : { get_param: vpp_patch_url } + __compile_state__ : { get_param: compile_state } + __nexus_artifact_repo__: { get_param: nexus_artifact_repo } + template: | + #!/bin/bash + + # Create configuration files + mkdir /opt/config + echo "__repo_url_artifacts__" > /opt/config/repo_url_artifacts.txt + echo "__demo_artifacts_version__" > /opt/config/demo_artifacts_version.txt + echo "__script_version__" > /opt/config/script_version.txt + echo "__cloud_env__" > /opt/config/cloud_env.txt + echo "__vpp_source_repo_url__" > /opt/config/vpp_source_repo_url.txt + echo "__vpp_source_repo_release_tag__" > /opt/config/vpp_source_repo_release_tag.txt + echo "__vpp_patch_url__" > /opt/config/vpp_patch_url.txt + echo "__compile_state__" > /opt/config/compile_state.txt + echo "__nexus_artifact_repo__" > /opt/config/nexus_artifact_repo.txt + + # Download and run install script + apt-get -y install unzip + if [[ "__script_version__" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi + curl -k -L "__nexus_artifact_repo__/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=__script_version__" -o /opt/vcpe-scripts-__script_version__.zip + unzip -j /opt/vcpe-scripts-__script_version__.zip -d /opt v_bng_build.sh + cd /opt + chmod +x v_bng_build.sh + ./v_bng_build.sh -- cgit 1.2.3-korg