diff options
Diffstat (limited to 'tests/blueprints/tosca-vnfd-3node-tacker')
-rwxr-xr-x | tests/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml | 131 | ||||
-rw-r--r-- | tests/blueprints/tosca-vnfd-3node-tacker/favicon.ico | bin | 0 -> 1150 bytes | |||
-rw-r--r-- | tests/blueprints/tosca-vnfd-3node-tacker/logo.png | bin | 0 -> 4212 bytes | |||
-rwxr-xr-x | tests/blueprints/tosca-vnfd-3node-tacker/start.sh | 97 |
4 files changed, 228 insertions, 0 deletions
diff --git a/tests/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml b/tests/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml new file mode 100755 index 0000000..2b4bd18 --- /dev/null +++ b/tests/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml @@ -0,0 +1,131 @@ +tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0 + +description: Hello 3Node + +metadata: + template_name: tosca-vnfd-hello-3node + +topology_template: + node_templates: + VDU1: + type: tosca.nodes.nfv.VDU.Tacker + capabilities: + nfv_compute: + properties: + num_cpus: 1 + mem_size: 1024 MB + disk_size: 4 GB + properties: + image: models-xenial-server + availability_zone: nova + mgmt_driver: noop + config: | + param0: key1 + param1: key2 + + CP11: + type: tosca.nodes.nfv.CP.Tacker + properties: + management: true + anti_spoofing_protection: false + requirements: + - virtualLink: + node: VL1 + - virtualBinding: + node: VDU1 + + CP12: + type: tosca.nodes.nfv.CP.Tacker + properties: + anti_spoofing_protection: false + requirements: + - virtualLink: + node: VL2 + - virtualBinding: + node: VDU1 + + VDU2: + type: tosca.nodes.nfv.VDU.Tacker + capabilities: + nfv_compute: + properties: + num_cpus: 1 + mem_size: 1024 MB + disk_size: 4 GB + properties: + image: models-xenial-server + availability_zone: nova + mgmt_driver: noop + config: | + param0: key1 + param1: key2 + + CP21: + type: tosca.nodes.nfv.CP.Tacker + properties: + management: true + anti_spoofing_protection: false + requirements: + - virtualLink: + node: VL1 + - virtualBinding: + node: VDU2 + + CP22: + type: tosca.nodes.nfv.CP.Tacker + properties: + anti_spoofing_protection: false + requirements: + - virtualLink: + node: VL2 + - virtualBinding: + node: VDU2 + + VDU3: + type: tosca.nodes.nfv.VDU.Tacker + capabilities: + nfv_compute: + properties: + num_cpus: 1 + mem_size: 1024 MB + disk_size: 4 GB + properties: + image: models-xenial-server + availability_zone: nova + mgmt_driver: noop + config: | + param0: key1 + param1: key2 + + CP31: + type: tosca.nodes.nfv.CP.Tacker + properties: + management: true + anti_spoofing_protection: false + requirements: + - virtualLink: + node: VL1 + - virtualBinding: + node: VDU3 + + CP32: + type: tosca.nodes.nfv.CP.Tacker + properties: + anti_spoofing_protection: false + requirements: + - virtualLink: + node: VL2 + - virtualBinding: + node: VDU3 + + VL1: + type: tosca.nodes.nfv.VL + properties: + network_name: vnf_mgmt + vendor: Tacker + + VL2: + type: tosca.nodes.nfv.VL + properties: + network_name: vnf_private + vendor: Tacker diff --git a/tests/blueprints/tosca-vnfd-3node-tacker/favicon.ico b/tests/blueprints/tosca-vnfd-3node-tacker/favicon.ico Binary files differnew file mode 100644 index 0000000..cd95189 --- /dev/null +++ b/tests/blueprints/tosca-vnfd-3node-tacker/favicon.ico diff --git a/tests/blueprints/tosca-vnfd-3node-tacker/logo.png b/tests/blueprints/tosca-vnfd-3node-tacker/logo.png Binary files differnew file mode 100644 index 0000000..a4bf310 --- /dev/null +++ b/tests/blueprints/tosca-vnfd-3node-tacker/logo.png diff --git a/tests/blueprints/tosca-vnfd-3node-tacker/start.sh b/tests/blueprints/tosca-vnfd-3node-tacker/start.sh new file mode 100755 index 0000000..ab759d9 --- /dev/null +++ b/tests/blueprints/tosca-vnfd-3node-tacker/start.sh @@ -0,0 +1,97 @@ +#!/bin/bash +# Copyright 2016 AT&T Intellectual Property, Inc +# +# 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. +# +# What this is: Startup script for a 3-node web server composed of two server +# nodes and a load balancer. +# +# Status: this is a work in progress, under test. +# +# How to use: +# Intended to be invoked from vHello_3Node.sh +# $ bash start.sh type params +# type: type of VNF component [webserver|lb] +# lb params: app1_ip app2_ip +# app1_ip app2_ip: address of the web servers + +setup_webserver () { + echo "$0: Setup website and dockerfile" + mkdir ~/www + mkdir ~/www/html + + # ref: https://hub.docker.com/_/nginx/ + cat > ~/www/Dockerfile <<EOM +FROM nginx +COPY html /usr/share/nginx/html +EOM + + host=$(hostname) + cat > ~/www/html/index.html <<EOM +<!DOCTYPE html> +<html> +<head> +<title>Hello World!</title> +<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1"/> +<style> +body { width: 100%; background-color: white; color: black; padding: 0px; margin: 0px; font-family: sans-serif; font-size:100%; } +</style> +</head> +<body> +Hello World!<br> +Welcome to OPNFV @ $host!</large><br/> +<a href="http://wiki.opnfv.org"><img src="https://www.opnfv.org/sites/all/themes/opnfv/logo.png"></a> +</body></html> +EOM + + wget https://git.opnfv.org/cgit/ves/plain/tests/blueprints/tosca-vnfd-hello-ves/favicon.ico -O ~/www/html/favicon.ico + + echo "$0: Install docker" + # Per https://docs.docker.com/engine/installation/linux/ubuntulinux/ + # Per https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04 + sudo apt-get install apt-transport-https ca-certificates + sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D + echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list + sudo apt-get update + sudo apt-get purge lxc-docker + sudo apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual + sudo apt-get install -y docker-engine + + echo "$0: Get nginx container and start website in docker" + # Per https://hub.docker.com/_/nginx/ + sudo docker pull nginx + cd ~/www + sudo docker build -t vhello . + sudo docker run --name vHello -d -p 80:80 vhello + + # Debug hints + # id=$(sudo ls /var/lib/docker/containers) + # sudo tail -f /var/lib/docker/containers/$id/$id-json.log \ + } + +setup_lb () { + echo "$0: setup load balancer" + echo "$0: install dependencies" + sudo apt-get update + + echo "$0: Setup iptables rules" + echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward + sudo sysctl net.ipv4.ip_forward=1 + sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination $1:80 + sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination $2:80 + sudo iptables -t nat -A POSTROUTING -j MASQUERADE + # debug hints: list rules (sudo iptables -S -t nat), flush (sudo iptables -F -t nat) +} + +setup_$1 $2 $3 +exit 0 |