diff options
Diffstat (limited to 'tests/blueprints')
-rwxr-xr-x | tests/blueprints/tosca-vnfd-hello-ves/blueprint.yaml | 146 | ||||
-rwxr-xr-x | tests/blueprints/tosca-vnfd-hello-ves/start.sh | 101 |
2 files changed, 158 insertions, 89 deletions
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 + <pubkey> + EOM + sudo mount /dev/sr0 /mnt/ + mkdir /tmp/www + cd /tmp/www + mkdir html + cat >Dockerfile <<EOM + FROM nginx + COPY html /usr/share/nginx/html + EOM + host=$(hostname) + id=$(cut -d ',' -f 3 /mnt/openstack/latest/meta_data.json) + cat <<EOM >html/index.html + <!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> + <large>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> + <div> + <p>Instance ID fom config drive file /mnt/openstack/latest/meta_data.json></p> + <pre> + $id + </pre> + <p>Server setup completed at $(date)</p> + </div> + </body></html> + 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 + <pubkey> + EOM + sudo mount /dev/sr0 /mnt/ + mkdir /tmp/www + cd /tmp/www + mkdir html + cat >Dockerfile <<EOM + FROM nginx + COPY html /usr/share/nginx/html + EOM + host=$(hostname) + id=$(cut -d ',' -f 3 /mnt/openstack/latest/meta_data.json) + cat <<EOM >html/index.html + <!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> + <large>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> + <div> + <p>Instance ID fom config drive file /mnt/openstack/latest/meta_data.json></p> + <pre> + $id + </pre> + <p>Server setup completed at $(date)</p> + </div> + </body></html> + 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 + <pubkey> + 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 <vdu1_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 <vdu2_ip>: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 + <pubkey> + 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 <<EOF | sudo tee -a $conf @@ -67,7 +65,7 @@ setup_collectd () { Globals true </LoadPlugin> <Plugin python> - 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 </LoadPlugin> <Plugin python> - 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 </Aggregation> </Plugin> +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 <<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 - - 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 |