From c5fe902ac6e773ec7232ccca67a64856e1b508d0 Mon Sep 17 00:00:00 2001 From: bryan Date: Sun, 5 Mar 2017 10:12:18 -0800 Subject: Update for Danube (work in progress) JIRA: VES-1 Removed preliminary versions of tests for now. Aligned with the Models vHello_3Node_Tacker test. Separated out actions for collectd and monitor install and run them directly vs thru the container. Added parameters as needed for the new design. Updated with typical overview of the test/demo flow. Add port 30000 ingress to vHello security group. Remove juju workaround for port_security. Remote use of id_rsa (replaced with notes on ssh assumptions). Use VDU3 (LB) in traffic generation. Change-Id: I42807449f7526efcd191c0b7b0b4754ffcfffa6e Signed-off-by: bryan --- .../blueprints/tosca-vnfd-hello-ves/blueprint.yaml | 146 +++++++++++++++++++++ tests/blueprints/tosca-vnfd-hello-ves/start.sh | 101 ++------------ 2 files changed, 158 insertions(+), 89 deletions(-) (limited to 'tests/blueprints/tosca-vnfd-hello-ves') diff --git a/tests/blueprints/tosca-vnfd-hello-ves/blueprint.yaml b/tests/blueprints/tosca-vnfd-hello-ves/blueprint.yaml index d17e300..c652423 100755 --- a/tests/blueprints/tosca-vnfd-hello-ves/blueprint.yaml +++ b/tests/blueprints/tosca-vnfd-hello-ves/blueprint.yaml @@ -19,6 +19,61 @@ topology_template: image: models-xenial-server availability_zone: nova mgmt_driver: noop + config_drive: true + user_data_format: RAW + user_data: | + #!/bin/bash + set -x + mkdir /home/ubuntu + chown -R ubuntu /home/ubuntu + mkdir /home/ubuntu/.ssh + cat << EOM >/home/ubuntu/.ssh/authorized_keys + + EOM + sudo mount /dev/sr0 /mnt/ + mkdir /tmp/www + cd /tmp/www + mkdir html + cat >Dockerfile <html/index.html + + + + Hello World! + + + + + Welcome to OPNFV @ $host!
+ +
+

Instance ID fom config drive file /mnt/openstack/latest/meta_data.json>

+
+          $id
+          
+

Server setup completed at $(date)

+
+ + EOM + wget -O /tmp/www/html/favicon.ico https://git.opnfv.org/models/plain/tests/blueprints/tosca-vnfd-3node-tacker/favicon.ico + sudo apt-get install apt-transport-https ca-certificates curl software-properties-common + curl -fsSL https://apt.dockerproject.org/gpg | sudo apt-key add - + sudo apt-key update + echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" >~/dockerrepo + sudo tee -a /etc/apt/sources.list.d/docker.list ~/dockerrepo + sudo add-apt-repository "deb https://apt.dockerproject.org/repo/ ubuntu-xenial main" + sudo apt-get update + sudo apt-get install -y docker-engine + sudo docker pull nginx + sudo docker build -t vhello . + sudo docker run --name vHello -d -p 80:80 vhello config: | param0: key1 param1: key2 @@ -56,6 +111,61 @@ topology_template: image: models-xenial-server availability_zone: nova mgmt_driver: noop + config_drive: true + user_data_format: RAW + user_data: | + #!/bin/bash + set -x + mkdir /home/ubuntu + chown -R ubuntu /home/ubuntu + mkdir /home/ubuntu/.ssh + cat << EOM >/home/ubuntu/.ssh/authorized_keys + + EOM + sudo mount /dev/sr0 /mnt/ + mkdir /tmp/www + cd /tmp/www + mkdir html + cat >Dockerfile <html/index.html + + + + Hello World! + + + + + Welcome to OPNFV @ $host!
+ +
+

Instance ID fom config drive file /mnt/openstack/latest/meta_data.json>

+
+          $id
+          
+

Server setup completed at $(date)

+
+ + EOM + wget -O /tmp/www/html/favicon.ico https://git.opnfv.org/models/plain/tests/blueprints/tosca-vnfd-3node-tacker/favicon.ico + sudo apt-get install apt-transport-https ca-certificates curl software-properties-common + curl -fsSL https://apt.dockerproject.org/gpg | sudo apt-key add - + sudo apt-key update + echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" >~/dockerrepo + sudo tee -a /etc/apt/sources.list.d/docker.list ~/dockerrepo + sudo add-apt-repository "deb https://apt.dockerproject.org/repo/ ubuntu-xenial main" + sudo apt-get update + sudo apt-get install -y docker-engine + sudo docker pull nginx + sudo docker build -t vhello . + sudo docker run --name vHello -d -p 80:80 vhello config: | param0: key1 param1: key2 @@ -93,6 +203,32 @@ topology_template: image: models-xenial-server availability_zone: nova mgmt_driver: noop + user_data_format: RAW + user_data: | + #!/bin/bash + set -x + mkdir /home/ubuntu + chown -R ubuntu /home/ubuntu + mkdir /home/ubuntu/.ssh + cat << EOM >/home/ubuntu/.ssh/authorized_keys + + EOM + cat << EOF >/tmp/setup.sh + 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 :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 :80 + sudo iptables -t nat -A POSTROUTING -j MASQUERADE + EOF + bash /tmp/setup.sh + config: | + param0: key1 + param1: key2 + config: | param0: key1 param1: key2 @@ -130,6 +266,16 @@ topology_template: image: models-xenial-server availability_zone: nova mgmt_driver: noop + user_data_format: RAW + user_data: | + #!/bin/bash + set -x + mkdir /home/ubuntu + chown -R ubuntu /home/ubuntu + mkdir /home/ubuntu/.ssh + cat << EOM >/home/ubuntu/.ssh/authorized_keys + + EOM config: | param0: key1 param1: key2 diff --git a/tests/blueprints/tosca-vnfd-hello-ves/start.sh b/tests/blueprints/tosca-vnfd-hello-ves/start.sh index 26fb667..daaaf80 100755 --- a/tests/blueprints/tosca-vnfd-hello-ves/start.sh +++ b/tests/blueprints/tosca-vnfd-hello-ves/start.sh @@ -21,15 +21,13 @@ # How to use: # Intended to be invoked from vHello_VES.sh # $ bash start.sh type params -# type: type of VNF component [webserver|lb|monitor|collectd] -# webserver params: ID CollectorIP username password -# lb params: ID CollectorIP username password app1_ip app2_ip +# type: type of VNF component [monitor|collectd] +# collector params: ID CollectorIP username password # monitor params: VDU1_ID VDU1_ID VDU1_ID username password # ID: VM ID # CollectorIP: IP address of the collector # username: Username for Collector RESTful API authentication # password: Password for Collector RESTful API authentication -# app1_ip app2_ip: address of the web servers setup_collectd () { guest=$1 @@ -53,13 +51,13 @@ setup_collectd () { cd ~ echo "$0: Install VES collectd plugin" - git clone https://github.com/maryamtahhan/OpenStackBarcelonaDemo.git + git clone https://git.opnfv.org/barometer - sudo sed -i -- "s/FQDNLookup true/FQDNLookup false/" /etc/collectd/collectd.conf - sudo sed -i -- "s/#LoadPlugin cpu/LoadPlugin cpu/" /etc/collectd/collectd.conf - sudo sed -i -- "s/#LoadPlugin disk/LoadPlugin disk/" /etc/collectd/collectd.conf - sudo sed -i -- "s/#LoadPlugin interface/LoadPlugin interface/" /etc/collectd/collectd.conf - sudo sed -i -- "s/#LoadPlugin memory/LoadPlugin memory/" /etc/collectd/collectd.conf + sudo sed -i -- "s/FQDNLookup true/FQDNLookup false/" $conf + sudo sed -i -- "s/#LoadPlugin cpu/LoadPlugin cpu/" $conf + sudo sed -i -- "s/#LoadPlugin disk/LoadPlugin disk/" $conf + sudo sed -i -- "s/#LoadPlugin interface/LoadPlugin interface/" $conf + sudo sed -i -- "s/#LoadPlugin memory/LoadPlugin memory/" $conf if [[ "$guest" == true ]]; then cat < - ModulePath "/home/ubuntu/OpenStackBarcelonaDemo/ves_plugin/" + ModulePath "/home/$USER/barometer/3rd_party/collectd-ves-plugin/ves_plugin/" LogTraces true Interactive false Import "ves_plugin" @@ -106,7 +104,7 @@ EOF Globals true - ModulePath "/home/$USER/OpenStackBarcelonaDemo/ves_plugin/" + ModulePath "/home/$USER/barometer/3rd_party/collectd-ves-plugin/ves_plugin/" LogTraces true Interactive false Import "ves_plugin" @@ -143,6 +141,7 @@ LoadPlugin aggregation CalculateAverage true +LoadPlugin uuid EOF fi sudo service collectd restart @@ -182,80 +181,6 @@ setup_agent () { setup_collectd true } -setup_webserver () { - echo "$0: Setup website and dockerfile" - mkdir ~/www - mkdir ~/www/html - - # ref: https://hub.docker.com/_/nginx/ - cat > ~/www/Dockerfile < ~/www/html/index.html < - - -Hello World! - - - - -Hello World!
-Welcome to OPNFV @ $host!
- - -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 - - echo "$0: setup VES agents" - setup_agent - - # 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 VES 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 $app1_ip: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 $app2_ip:80 - sudo iptables -t nat -A POSTROUTING -j MASQUERADE - # debug hints: list rules (sudo iptables -S -t nat), flush (sudo iptables -F -t nat) - - echo "$0: setup VES agents" - setup_agent -} - setup_monitor () { echo "$0: setup VES Monitor" echo "$0: install dependencies" @@ -277,7 +202,7 @@ setup_monitor () { sed -i -- "/vel_topic_name = /a vdu2_id = $vdu2_id" evel-test-collector/config/collector.conf sed -i -- "/vel_topic_name = /a vdu1_id = $vdu1_id" evel-test-collector/config/collector.conf - python monitor.py --config evel-test-collector/config/collector.conf --section default +# python monitor.py --config evel-test-collector/config/collector.conf --section default } type=$1 @@ -293,8 +218,6 @@ else collector_ip=$3 username=$4 password=$5 - app1_ip=$6 - app2_ip=$7 fi setup_$type $1 -- cgit 1.2.3-korg