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
115
116
117
118
119
|
#!/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 simple web server as part of the
# vHello_VES test of the OPNFV VES project.
#
# Status: this is a work in progress, under test.
#
# How to use:
# $ bash start.sh ID IP username password
# ID: username:password to use in REST
# IP: IP address of the collector
# username: Username for Collector RESTful API authentication
# password: Password for Collector RESTful API authentication
setup_agent () {
echo "$0: Install prerequisites"
sudo apt-get install -y gcc
# NOTE: force is required as some packages can't be authenticated...
sudo apt-get install -y --force-yes libcurl4-openssl-dev
sudo apt-get install -y make
echo "$0: Clone agent library"
cd /home/ubuntu
git clone https://github.com/att/evel-library.git
echo "$0: Clone VES repo"
git clone https://gerrit.opnfv.org/gerrit/ves
echo "$0: Use vHello_VES blueprint version of agent_demo.c"
cp ves/tests/blueprints/tosca-vnfd-hello-ves/evel_demo.c evel-library/code/evel_demo/evel_demo.c
echo "$0: Update parameters and build agent demo"
sed -i -- "/api_secure,/{n;s/.*/ \"$username\",/}" evel-library/code/evel_demo/evel_demo.c
sed -i -- "/\"hello\",/{n;s/.*/ \"$password\",/}" evel-library/code/evel_demo/evel_demo.c
echo "$0: Build agent demo"
cd evel-library/bldjobs
make
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ubuntu/evel-library/libs/x86_64
nohup ../output/x86_64/evel_demo --id $agent_id --fqdn $collector_ip --port 30000 --username $username --password $password &
# echo "$0: Start agent demo, repeat every minute"
# crontab -l > /tmp/cron
# echo "* * * * 1-5 /home/ubuntu/evel-library/output/x86_64/evel_demo --id $agent_id --fqdn $collector_ip --port 30000 --username $username --password $password" >> /tmp/cron
# crontab /tmp/cron
# rm /tmp/cron
}
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
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>
<a href="http://wiki.opnfv.org"><img src="https://www.opnfv.org/sites/all/themes/opnfv/logo.png"></a>
</body></html>
EOM
cp ~/ves/tests/blueprints/tosca-vnfd-hello-ves/favicon.ico ~/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 event delivery for the nginx server"
# id=$(sudo ls /var/lib/docker/containers)
# sudo tail -f /var/lib/docker/containers/$id/$id-json.log
agent_id=$1
collector_ip=$2
username=$3
password=$4
setup_agent
|