Build docker image for ves-app 99/47799/1
authorBryan Sullivan <bryan.sullivan@att.com>
Sat, 25 Nov 2017 14:19:28 +0000 (06:19 -0800)
committerBryan Sullivan <bryan.sullivan@att.com>
Sat, 25 Nov 2017 14:19:28 +0000 (06:19 -0800)
JIRA: VES-2

Change-Id: I3b953b882d080d6e9ecaa8600bde92acb34dc538
Signed-off-by: Bryan Sullivan <bryan.sullivan@att.com>
tools/ves-agent/Dockerfile [new file with mode: 0644]
tools/ves-agent/start.sh [new file with mode: 0644]
tools/ves-setup.sh

diff --git a/tools/ves-agent/Dockerfile b/tools/ves-agent/Dockerfile
new file mode 100644 (file)
index 0000000..4c37197
--- /dev/null
@@ -0,0 +1,59 @@
+# Copyright 2017 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: A Dockerfile for building an OPFNV VES Agent container image.
+#
+# Status: this is a work in progress, under test.
+#
+
+FROM ubuntu:xenial
+
+MAINTAINER Bryan Sullivan
+
+RUN apt-get update
+RUN apt-get install -y apt-utils
+RUN apt-get -y upgrade
+RUN apt-get install -y git
+# Required for kafka
+RUN apt-get install -y default-jre
+RUN apt-get install -y zookeeperd
+RUN apt-get install -y python-pip
+RUN pip install kafka-python
+# Required for building collectd
+RUN apt-get install -y pkg-config
+
+RUN mkdir /opt/ves
+
+# Build Kafka client
+RUN apt-get install -y build-essential
+RUN apt-get install -y libpthread-stubs0-dev
+RUN apt-get install -y libssl-dev
+RUN apt-get install -y libsasl2-dev
+RUN apt-get install -y liblz4-dev
+RUN /bin/bash -c 'git clone --branch v0.9.5 \
+https://github.com/edenhill/librdkafka.git /opt/ves/librdkafka; \
+cd /opt/ves/librdkafka; ./configure --prefix=/usr; \
+make; make install'
+
+# Install VES Agent
+RUN pip install pyaml
+
+RUN git clone https://gerrit.opnfv.org/gerrit/barometer /opt/ves/barometer
+# Test patch
+RUN /bin/bash -c 'cd /opt/ves/barometer; \
+git fetch https://gerrit.opnfv.org/gerrit/barometer \
+refs/changes/27/47427/1 && git checkout FETCH_HEAD'
+
+COPY start.sh /opt/ves/start.sh
+ENTRYPOINT ["/bin/bash", "/opt/ves/start.sh"]
diff --git a/tools/ves-agent/start.sh b/tools/ves-agent/start.sh
new file mode 100644 (file)
index 0000000..1153ab1
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/bash
+# Copyright 2017 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 the OPNFV VES Agent running under docker.
+
+echo "$ves_kafka_host $ves_hostname" >>/etc/hosts
+
+cd /opt/ves/barometer/3rd_party/collectd-ves-app/ves_app
+cat <<EOF >ves_app_config.conf
+[config]
+Domain = $ves_host
+Port = $ves_port
+Path = $ves_path
+Topic = $ves_topic
+UseHttps = $ves_https
+Username = $ves_user
+Password = $ves_pass
+SendEventInterval = $ves_interval
+ApiVersion = $ves_version
+KafkaPort = $ves_kafka_port
+KafkaBroker = $ves_kafka_host
+EOF
+
+cat ves_app_config.conf
+echo "ves_mode=$ves_mode"
+python ves_app.py --events-schema=$ves_mode.yaml --loglevel DEBUG \
+  --config=ves_app_config.conf
+echo "*** ves_app.log ***"
+cat ves_app.log
+echo "*** /opt/ves/kafka_2.11-0.11.0.2/kafka.log ***"
+cat /opt/ves/kafka_2.11-0.11.0.2/kafka.log
index c9f8ecd..9b37740 100644 (file)
@@ -367,54 +367,24 @@ EOF
 
 function setup_agent() {
   log "setup VES agent"
-  if [[ ! -f /.dockerenv ]]; then
-    log "start the ves-agent container"
-    sudo docker run -it -d -v /tmp/ves:/opt/ves --name=ves-agent \
-    ubuntu:xenial /bin/bash 
-    log "execute the agent setup script in the container"
-    sudo docker exec ves-agent /bin/bash /opt/ves/ves-setup.sh agent
-  else
-    common_prereqs
-    log "setup the VES environment"
-    source /opt/ves/ves_env.sh
-    log "install agent prerequisites"
-    pip install pyaml
-
-    setup_kafka_client
-
-    log "clone OPNFV Barometer"
-    rm -rf /opt/ves/barometer
-    git clone https://gerrit.opnfv.org/gerrit/barometer /opt/ves/barometer
-    # Test patch
-    cd /opt/ves/barometer
-    git fetch https://gerrit.opnfv.org/gerrit/barometer refs/changes/27/47427/1 && git checkout FETCH_HEAD
-
-    log "setup ves_app_config.conf"
-    source /opt/ves/ves_env.sh
-    cd /opt/ves/barometer/3rd_party/collectd-ves-app/ves_app
-    cat <<EOF >ves_app_config.conf
-[config]
-Domain = $ves_host
-Port = $ves_port
-Path = $ves_path
-Topic = $ves_topic
-UseHttps = $ves_https
-Username = $ves_user
-Password = $ves_pass
-SendEventInterval = $ves_interval
-ApiVersion = $ves_version
-KafkaPort = $ves_kafka_port
-KafkaBroker = $ves_kafka_host
-EOF
-
-#    log "add guest.yaml measurements to host.yaml (enables actual host data)"
-#    tail --lines=+24 guest.yaml >>host.yaml
-
-    log "start VES agent"
-    echo "$ves_kafka_host $ves_hostname">>/etc/hosts
-    nohup python ves_app.py --events-schema=$ves_mode.yaml --loglevel ERROR \
-      --config=ves_app_config.conf > /opt/ves/ves_app.stdout.log 2>&1 &
-  fi
+  source /tmp/ves/ves_env.sh
+  cd /tmp/ves/tools
+  sudo docker build -t ves-agent ves-agent
+  sudo docker run -it -d \
+    -e ves_mode=$ves_mode \
+    -e ves_host=$ves_host  \
+    -e ves_port=$ves_port \
+    -e ves_path=$ves_path \
+    -e ves_topic=$ves_topic \
+    -e ves_https=$ves_https \
+    -e ves_user=$ves_user \
+    -e ves_pass=$ves_pass \
+    -e ves_interval=$ves_interval \
+    -e ves_version=$ves_version \
+    -e ves_kafka_port=$ves_kafka_port \
+    -e ves_kafka_host=$ves_kafka_host \
+    -e ves_hostname=$ves_hostname \
+    --name ves-agent ves-agent
 }
 
 function setup_collector() {