From 32d225be774ac791514f7928c433566bf109f755 Mon Sep 17 00:00:00 2001 From: Bryan Sullivan Date: Sat, 25 Nov 2017 06:19:28 -0800 Subject: Build docker image for ves-app JIRA: VES-2 Change-Id: I3b953b882d080d6e9ecaa8600bde92acb34dc538 Signed-off-by: Bryan Sullivan --- tools/ves-agent/Dockerfile | 59 +++++++++++++++++++++++++++++++++++++++++ tools/ves-agent/start.sh | 43 ++++++++++++++++++++++++++++++ tools/ves-setup.sh | 66 +++++++++++++--------------------------------- 3 files changed, 120 insertions(+), 48 deletions(-) create mode 100644 tools/ves-agent/Dockerfile create mode 100644 tools/ves-agent/start.sh diff --git a/tools/ves-agent/Dockerfile b/tools/ves-agent/Dockerfile new file mode 100644 index 0000000..4c37197 --- /dev/null +++ b/tools/ves-agent/Dockerfile @@ -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 index 0000000..1153ab1 --- /dev/null +++ b/tools/ves-agent/start.sh @@ -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 <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 diff --git a/tools/ves-setup.sh b/tools/ves-setup.sh index c9f8ecd..9b37740 100644 --- a/tools/ves-setup.sh +++ b/tools/ves-setup.sh @@ -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 <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() { -- cgit 1.2.3-korg