From da9564a9b0b78bbe341de9b039aab3c378eb027f Mon Sep 17 00:00:00 2001 From: Bryan Sullivan Date: Mon, 22 Jan 2018 15:25:53 -0800 Subject: Implement component deployment via cloudify JIRA: VES-2 Change-Id: Ic696f13d2a32e10663f50cd4e26b9a060525ff92 Signed-off-by: Bryan Sullivan --- tools/demo_deploy.sh | 163 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 97 insertions(+), 66 deletions(-) (limited to 'tools/demo_deploy.sh') diff --git a/tools/demo_deploy.sh b/tools/demo_deploy.sh index 305de9c..1105c2a 100644 --- a/tools/demo_deploy.sh +++ b/tools/demo_deploy.sh @@ -35,9 +35,17 @@ #. - env variables set prior to running this script, as per ves-setup.sh #. ves_kafka_hostname: hostname of the node where the kafka server runs #. - optional env varibles set prior to running this script, as per ves-setup.sh -#. ves_influxdb_host: ip:port of the influxdb service +#. ves_host: ip of the VES collector service +#. ves_zookeeper_host: ip of the zookeeper service +#. ves_zookeeper_port: port of the zookeeper service +#. ves_kafka_host: ip of the kafka service +#. ves_kafka_port: port of the kafka service +#. ves_port: port of the VES collector service +#. ves_influxdb_host: ip of the influxdb service +#. ves_influxdb_port: port of the influxdb service #. ves_influxdb_auth: authentication for the influxdb service -#. ves_grafana_host: ip:port of the grafana service +#. ves_grafana_host: ip of the grafana service +#. ves_grafana_port: port of the grafana service #. ves_grafana_auth: authentication for the grafana service #. ves_loglevel: loglevel for VES Agent and Collector (ERROR|DEBUG) #. @@ -49,81 +57,104 @@ #. Usage: on the admin server #. $ git clone https://gerrit.opnfv.org/gerrit/ves ~/ves #. $ cd ~/ves/tools -#. $ bash demo_deploy.sh [cloudify] -#. : SSH key enabling password-less SSH to nodes +#. $ bash demo_deploy.sh [cloudify] #. : username on node with password-less SSH authorized -#. : master node where core components will be installed -#. : list of worker nodes where collectd will be installed +#. : hostname of k8s master node #. cloudify: flag indicating to deploy VES core services via Cloudify -key=$1 -user=$2 -master=$3 -workers="$4" -cloudify=$5 +trap 'fail' ERR -eval `ssh-agent` -ssh-add $key +function fail() { + log $1 + exit 1 +} -ves_host=$master -ves_mode=node -ves_user=hello -ves_pass=world -ves_kafka_host=$master -ves_kafka_hostname=$ves_kafka_hostname -ves_influxdb_host=$ves_influxdb_host -ves_influxdb_auth=$ves_influxdb_auth -ves_grafana_host=$ves_grafana_host -ves_grafana_auth=$ves_grafana_auth -ves_loglevel=$ves_loglevel -env | grep ves -source ~/ves/tools/ves-setup.sh env +function log() { + f=$(caller 0 | awk '{print $2}') + l=$(caller 0 | awk '{print $1}') + echo; echo "$f:$l ($(date)) $1" +} -echo; echo "$0 $(date): Setting up master node" -ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ - $user@$master mkdir /home/$user/ves -scp -r -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ - ~/ves/tools $user@$master:/home/$user/ves -ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ - $user@$master <~/ves/tools/ves_env.sh + for var in $vars; do echo "export $var" | tee -a ~/ves/tools/ves_env.sh; done -if [[ "$master" == "$workers" ]]; then - nodes=$master -else - nodes="$master $workers" -fi + log "Setting up master node" + run_master "mkdir /home/$user/ves" + scp -r -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ + ~/ves/tools $user@$master:/home/$user/ves + run "bash ves/tools/ves-setup.sh collector $cloudify" + run "bash ves/tools/ves-setup.sh kafka $cloudify" + run "bash ves/tools/ves-setup.sh agent $cloudify" -for node in $nodes; do - echo; echo "$0 $(date): Setting up collectd at $node" - if [[ "$node" != "$master" ]]; then - ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ - $user@$node mkdir /home/$user/ves - scp -r -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ - ~/ves/tools $user@$node:/home/$user/ves + if [[ "$k8s_master" == "$k8s_workers" ]]; then + nodes=$k8s_master + else + nodes="$k8s_master $k8s_workers" fi - ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ - $user@$node < ves-collectd-$node.log 2>&1 & -ves_kafka_host=$master -export ves_kafka_host -ves_kafka_port=$ves_kafka_port -export ves_kafka_port -ves_kafka_hostname=$ves_kafka_hostname -export ves_kafka_hostname -ves_mode=node -export ves_mode -bash /home/$user/ves/tools/ves-setup.sh collectd + + for node in $nodes; do + log "Setting up collectd at $node" + if [[ "$node" != "$k8s_master" ]]; then + ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ + $user@$node mkdir /home/$user/ves + scp -r -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ + ~/ves/tools $user@$node:/home/$user/ves + fi + run "bash ves/tools/ves-setup.sh collectd" EOF -done + done -echo; echo "$0 $(date): VES Grafana dashboards are available at http://$ves_grafana_host (login as admin/admin)" + source ~/ves/tools/ves_env.sh + log "VES Grafana dashboards are available at http://$ves_grafana_host:$ves_grafana_port (login as admin/admin)" +} +deploy_start=$((`date +%s`/60)) +user=$1 +master=$2 +cloudify=$3 +source ~/k8s_env_$master.sh +log "k8s environment as input" +env | grep k8s +eval `ssh-agent` +ssh-add $k8s_key +deploy -- cgit 1.2.3-korg