summaryrefslogtreecommitdiffstats
path: root/components/congress/install/bash/install_congress_1.sh
diff options
context:
space:
mode:
Diffstat (limited to 'components/congress/install/bash/install_congress_1.sh')
-rw-r--r--components/congress/install/bash/install_congress_1.sh333
1 files changed, 159 insertions, 174 deletions
diff --git a/components/congress/install/bash/install_congress_1.sh b/components/congress/install/bash/install_congress_1.sh
index 791d411..5a2a194 100644
--- a/components/congress/install/bash/install_congress_1.sh
+++ b/components/congress/install/bash/install_congress_1.sh
@@ -1,5 +1,5 @@
#!/bin/bash
-# Copyright 2015-2016 AT&T Intellectual Property, Inc
+# Copyright 2015-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.
@@ -13,165 +13,138 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-# This is script 1 of 2 for installation of Congress on the OPNFV Controller
-# node as installed via JOID or Apex (Fuel and Compass not yet verified).
+# This is script 1 of 2 for installation of OpenStack Congress. This install
+# procedure is intended to deploy Congress for testing purposes only.
# Prerequisites:
-# - OPFNV installed via JOID or Apex
-# - For Apex installs, on the jumphost, ssh to the undercloud VM and
-# $ su stack
-# - For JOID installs, admin-openrc.sh saved from Horizon to ~/admin-openrc.sh
-# - Retrieve the copper install script as below, optionally specifying the
-# branch to use as a URL parameter, e.g. ?h=stable%2Fbrahmaputra
-# $ cd ~
-# $ wget https://git.opnfv.org/cgit/copper/plain/components/congress/install/bash/install_congress_1.sh
-# $ wget https://git.opnfv.org/cgit/copper/plain/components/congress/install/bash/install_congress_2.sh
-# $ bash install_congress_1.sh [openstack-branch]
-# optionally specifying the branch identifier to use for OpenStack
+# - OpenStack base deployment.
+# Usage:
+# $ bash install_congress_1.sh <openrc> <target> [branch]
+# <openrc>: location of OpenStack openrc file
+# <target>: "localhost" or IP/hostname of the target
+# for localhost, installs congress in a docker container
+# branch: branch identifier to use for OpenStack
#
-set -x
+trap 'fail' ERR
+
+pass() {
+ echo "$0: $(date) Install Succeeded!"
+ exit 0
+}
+
+fail() {
+ echo "$0: $(date) Install Failed!"
+ exit 1
+}
+
+function create_container () {
+ echo "$0: $(date) Setup container"
+ if [ "$dist" == "Ubuntu" ]; then
+ echo "$0: $(date) install docker-engine"
+ sudo apt-get update
+ sudo apt-get install curl linux-image-extra-$(uname -r) linux-image-extra-virtual
+ sudo apt-get install apt-transport-https ca-certificates
+ curl -fsSL https://yum.dockerproject.org/gpg | sudo apt-key add -
+ sudo add-apt-repository "deb https://apt.dockerproject.org/repo/ ubuntu-$(lsb_release -cs) \ main"
+ sudo apt-get update
+ sudo apt-get -y install docker-engine
+ # xenial is needed for python 3.5
+ sudo docker pull ubuntu:xenial
+ sudo service docker start
+ echo "$0: $(date) start the congress container"
+ sudo docker run -it -d -v /opt/congress/:/opt/congress/ --name congress ubuntu:xenial /bin/bash
+ else
+ # Centos
+ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
+[dockerrepo]
+name=Docker Repository--parents
+baseurl=https://yum.dockerproject.org/repo/main/centos/7/
+enabled=1
+gpgcheck=1
+gpgkey=https://yum.dockerproject.org/gpg
+EOF
+ sudo yum install -y docker-engine
+ # xenial is needed for python 3.5
+ sudo service docker start
+ sudo docker pull ubuntu:xenial
+ echo "$0: $(date) start the congress container"
+ sudo docker run -i -t -d -v /opt/congress/:/opt/congress/ --name congress ubuntu:xenial /bin/bash
+ fi
+}
+
+install_client () {
+ echo "$0: $(date) Install $1"
+ git clone https://github.com/openstack/$1.git
+ cd $1
+ if [ $# -eq 2 ]; then git checkout $2; fi
+ pip install .
+ cd ..
+}
+
+openrc=$1
+target=$2
+if [ $# -eq 3 ]; then branch=$3; fi
+
+echo "$0: $(date) create shared folder /opt/congress"
+if [ -d /opt/congress ]; then sudo rm -rf /opt/congress; fi
+sudo mkdir /opt/congress
+sudo chown $USER /opt/congress
+cp $openrc /opt/congress/admin-openrc.sh
+cp `dirname $0`/install_congress_2.sh /opt/congress/.
+cp `dirname $0`/congress.conf.sample /opt/congress/.
+
+echo "$0: $(date) setup OpenStack CLI environment"
+source $openrc
+
+echo "$0: $(date) OS-specific prerequisite steps"
+dist=`grep DISTRIB_ID /etc/*-release | awk -F '=' '{print $2}'`
-sudo -i
+if [[ "$dist" == "Ubuntu" ]]; then
+ echo "$0: $(date) Ubuntu-based install"
+ CTLUSER="ubuntu"
+ echo "$0: $(date) Install jumphost dependencies"
+ echo "$0: $(date) install pip"
+ sudo apt-get install -y python-pip
+ echo "$0: $(date) install other dependencies"
+ sudo apt-get install apg git gcc python-dev libxml2 libxslt1-dev libzip-dev -y
+else
+ echo "$0: $(date) Centos-based install"
+ CTLUSER="heat-admin"
+ echo "$0: $(date) Install jumphost dependencies"
+ echo "$0: $(date) install pip"
+ sudo yum install python-pip -y
+ echo "$0: $(date) install other dependencies"
+ sudo yum install apg git gcc libxml2 python-devel libzip-devel libxslt-devel -y
+fi
-if [ $# -eq 1 ]; then osbranch=$1; fi
+if [[ "$target" == "localhost" ]]; then
+ create_container
+ target=$(sudo docker inspect congress | grep IPAddress | cut -d '"' -f 4 | tail -1)
+ sudo docker exec congress /bin/bash /opt/congress/install_congress_2.sh $target $branch
+ if [ $? -eq 1 ]; then fail; fi
+else
+ echo "$0: $(date) Copy $0 to the congress server"
+ ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $CTLUSER@$target "mkdir ~/congress; exit"
+ scp $openrc $CTLUSER@$target:/home/$CTLUSER/congress
+ echo "$0: $(date) Copy install_congress_2.sh to the congress server and execute"
+ scp `dirname $0`/install_congress_2.sh $CTLUSER@$target:/home/ubuntu/congress
+ ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $CTLUSER@$target "source ~/congress/install_congress_2.sh $target $branch; exit"
+ if [ $? -eq 1 ]; then fail; fi
+fi
-if [ -d ~/congress ]; then rm -rf ~/congress; fi
-mkdir ~/congress
+sudo pip install --upgrade pip virtualenv setuptools pbr tox
-echo "OS-specific prerequisite steps"
-dist=`grep DISTRIB_ID /etc/*-release | awk -F '=' '{print $2}'`
+echo "Create virtualenv"
+virtualenv /opt/congress/venv
+source /opt/congress/venv/bin/activate
-if [ "$dist" == "Ubuntu" ]; then
- # Ubuntu
- echo "Ubuntu-based install"
- echo "Create the environment file and copy to the congress server"
- cat <<EOF >~/congress/env.sh
-export CONGRESS_HOST=$(juju status --format=short | awk "/openstack-dashboard/ { print \$3 }")
-export HORIZON_HOST=$(juju status --format=short | awk "/openstack-dashboard/ { print \$3 }")
-export KEYSTONE_HOST=$(juju status --format=short | awk "/keystone\/0/ { print \$3 }")
-export CEILOMETER_HOST=$(juju status --format=short | awk "/ceilometer\/0/ { print \$3 }")
-export CINDER_HOST=$(juju status --format=short | awk "/cinder\/0/ { print \$3 }")
-export GLANCE_HOST=$(juju status --format=short | awk "/glance\/0/ { print \$3 }")
-export NEUTRON_HOST=$(juju status --format=short | awk "/neutron-api\/0/ { print \$3 }")
-export NOVA_HOST=$(juju status --format=short | awk "/nova-cloud-controller\/0/ { print \$3 }")
-EOF
- source ~/congress/env.sh
- export CTLUSER="ubuntu"
- ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $CTLUSER@$CONGRESS_HOST "mkdir ~/congress; exit"
- juju scp ~/admin-openrc.sh ubuntu@$CONGRESS_HOST:/home/$CTLUSER/congress
- juju scp ~/congress/env.sh ubuntu@$CONGRESS_HOST:/home/$CTLUSER/congress
- echo "Copy install_congress_2.sh to the congress server and execute"
- juju scp ~/install_congress_2.sh $CTLUSER@$CONGRESS_HOST:/home/ubuntu/congress
- ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $CTLUSER@$CONGRESS_HOST "source ~/congress/install_congress_2.sh; exit"
- echo "Install jumphost dependencies"
- echo "Update package repos"
- sudo apt-get update
- echo "install pip"
- apt-get install python-pip -y
- echo "install other dependencies"
- apt-get install apg git gcc python-dev libxml2 libxslt1-dev libzip-dev -y
- pip install --upgrade pip virtualenv setuptools pbr tox
- sed -i -- 's/echo/#echo/g' ~/admin-openrc.sh
- sed -i -- 's/read -sr OS_PASSWORD_INPUT/#read -sr OS_PASSWORD_INPUT/g' ~/admin-openrc.sh
- sed -i -- 's/$OS_PASSWORD_INPUT/openstack/g' ~/admin-openrc.sh
- cp ~/admin-openrc.sh ~/congress
-else
- # Centos
- echo "Centos-based install"
- echo "Setup undercloud environment so we can get overcloud Controller server address"
- source ~/stackrc
- echo "Get address of Controller node"
- export CONTROLLER_HOST1=$(openstack server list | awk "/overcloud-controller-0/ { print \$8 }" | sed 's/ctlplane=//g')
- echo "Create the environment file and copy to the congress server"
- cat <<EOF >~/congress/env.sh
-export CONGRESS_HOST=$CONTROLLER_HOST1
-export KEYSTONE_HOST=$CONTROLLER_HOST1
-export CEILOMETER_HOST=$CONTROLLER_HOST1
-export CINDER_HOST=$CONTROLLER_HOST1
-export GLANCE_HOST=$CONTROLLER_HOST1
-export NEUTRON_HOST=$CONTROLLER_HOST1
-export NOVA_HOST=$CONTROLLER_HOST1
-EOF
- source ~/congress/env.sh
- CTLUSER="heat-admin"
- ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $CTLUSER@$CONTROLLER_HOST1 "mkdir ~/congress; exit"
- scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ~/congress/env.sh $CTLUSER@$CONTROLLER_HOST1:/home/$CTLUSER/congress
- echo "Setup env for overcloud API access and copy to congress server"
- source ~/overcloudrc
- export OS_REGION_NAME=$(openstack endpoint list | awk "/ nova / { print \$4 }")
- cp ~/overcloudrc ~/congress/admin-openrc.sh
- # sed command below is a workaound for a bug - region shows up twice for some reason
- cat <<EOF | sed '$d' >>~/admin-openrc.sh
-export OS_REGION_NAME=$OS_REGION_NAME
-EOF
- scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ~/admin-openrc.sh $CTLUSER@$CONTROLLER_HOST1:/home/$CTLUSER/congress
- echo "Copy install_congress_2.sh to the congress server and execute"
- scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ~/install_congress_2.sh $CTLUSER@$CONTROLLER_HOST1:/home/$CTLUSER/congress
- ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $CTLUSER@$CONTROLLER_HOST1 "source ~/congress/install_congress_2.sh; exit"
- echo "Install jumphost dependencies"
- echo "install pip"
- yum install python-pip -y
- echo "install other dependencies"
- yum install apg git gcc libxml2 python-devel libzip-devel libxslt-devel -y
- pip install --upgrade pip virtualenv setuptools pbr tox
- source ~/admin-openrc.sh
-fi
+echo "$0: $(date) Install OpenStack clients"
+cd /opt/congress/
+install_client python-openstackclient $branch
+install_client python-neutronclient $branch
+install_client python-congressclient $branch
-echo "Clone congress"
-cd ~/congress
-git clone https://github.com/openstack/congress.git
-cd congress
-if [ $# -eq 1 ]; then git checkout $1; fi
-
-echo "Install OpenStack client"
-cd ~/congress
-git clone https://github.com/openstack/python-openstackclient.git
-cd python-openstackclient
-if [ $# -eq 1 ]; then git checkout $1; fi
-pip install -r requirements.txt
-pip install .
-
-echo "Install Congress client"
-cd ~/congress
-git clone https://github.com/openstack/python-congressclient.git
-cd python-congressclient
-if [ $# -eq 1 ]; then git checkout $1; fi
-pip install -r requirements.txt
-pip install .
-
-echo "Install Keystone client"
-cd ~/congress
-git clone https://github.com/openstack/python-keystoneclient.git
-cd python-keystoneclient
-if [ $# -eq 1 ]; then git checkout $1; fi
-pip install -r requirements.txt
-pip install .
-
-echo "Install Glance client"
-cd ~/congress
-git clone https://github.com/openstack/python-glanceclient.git
-cd python-glanceclient
-if [ $# -eq 2 ]; then git checkout $2; fi
-pip install -r requirements.txt
-pip install .
-
-echo "Install Neutron client"
-cd ~/congress
-git clone https://github.com/openstack/python-neutronclient.git
-cd python-neutronclient
-if [ $# -eq 2 ]; then git checkout $2; fi
-pip install -r requirements.txt
-pip install .
-
-echo "Install Nova client"
-cd ~/congress
-git clone https://github.com/openstack/python-novaclient.git
-cd python-novaclient
-if [ $# -eq 2 ]; then git checkout $2; fi
-pip install -r requirements.txt
-pip install .
-
-echo "setup Congress user. TODO: needs update in http://congress.readthedocs.org/en/latest/readme.html#installing-congress"
+echo "$0: $(date) setup Congress user. TODO: needs update in http://congress.readthedocs.org/en/latest/readme.html#installing-congress"
pip install cliff --upgrade
export ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
export SERVICE_TENANT=$(openstack project list | awk "/ admin / { print \$2 }")
@@ -179,65 +152,77 @@ openstack user create --password congress --project admin --email "congress@exam
export CONGRESS_USER=$(openstack user list | awk "/ congress / { print \$2 }")
openstack role add --user $CONGRESS_USER --project $SERVICE_TENANT $ADMIN_ROLE
-echo "Create Congress service"
+echo "$0: $(date) Create Congress service"
openstack service create congress --type "policy" --description "Congress Service"
export CONGRESS_SERVICE=$(openstack service list | awk "/ congress / { print \$2 }")
-echo "Create Congress endpoint"
-openstack endpoint create $CONGRESS_SERVICE \
+echo "$0: $(date) Create Congress endpoint"
+openstack endpoint create congress \
--region $OS_REGION_NAME \
- --publicurl http://$CONGRESS_HOST:1789/ \
- --adminurl http://$CONGRESS_HOST:1789/ \
- --internalurl http://$CONGRESS_HOST:1789/
-
-echo "Start the Congress service"
-ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $CTLUSER@$CONGRESS_HOST "source ~/congress/venv/bin/activate; ~/congress/congress/bin/congress-server &>/dev/null &"
+ --publicurl http://$target:1789/ \
+ --adminurl http://$target:1789/ \
+ --internalurl http://$target:1789/
+
+echo "$0: $(date) Start the Congress service"
+if [[ ! -z $(sudo docker inspect congress | grep IPAddress | cut -d '"' -f 4 | tail -1) ]]; then
+ sudo docker exec congress /opt/congress/congress/bin/congress-server &>/dev/null &
+ disown
+else
+ ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $CTLUSER@$target "/opt/congress/congress/bin/congress-server &>/dev/null &"
+fi
-echo "Wait 30 seconds for Congress service to startup"
+echo "$0: $(date) Wait 30 seconds for Congress service to startup"
sleep 30
-echo "Create data sources"
+echo "$0: $(date) Create data sources"
# To remove datasources: openstack congress datasource delete <name>
openstack congress datasource create nova "nova" \
--config username=$OS_USERNAME \
--config tenant_name=$OS_TENANT_NAME \
--config password=$OS_PASSWORD \
- --config auth_url=http://$KEYSTONE_HOST:5000/v2.0
+ --config auth_url=$OS_AUTH_URL
openstack congress datasource create neutronv2 "neutronv2" \
--config username=$OS_USERNAME \
--config tenant_name=$OS_TENANT_NAME \
--config password=$OS_PASSWORD \
- --config auth_url=http://$KEYSTONE_HOST:5000/v2.0
+ --config auth_url=$OS_AUTH_URL
openstack congress datasource create ceilometer "ceilometer" \
--config username=$OS_USERNAME \
--config tenant_name=$OS_TENANT_NAME \
--config password=$OS_PASSWORD \
- --config auth_url=http://$KEYSTONE_HOST:5000/v2.0
+ --config auth_url=$OS_AUTH_URL
openstack congress datasource create cinder "cinder" \
--config username=$OS_USERNAME \
--config tenant_name=$OS_TENANT_NAME \
--config password=$OS_PASSWORD \
- --config auth_url=http://$KEYSTONE_HOST:5000/v2.0
+ --config auth_url=$OS_AUTH_URL
openstack congress datasource create glancev2 "glancev2" \
--config username=$OS_USERNAME \
--config tenant_name=$OS_TENANT_NAME \
--config password=$OS_PASSWORD \
- --config auth_url=http://$KEYSTONE_HOST:5000/v2.0
+ --config auth_url=$OS_AUTH_URL
openstack congress datasource create keystone "keystone" \
--config username=$OS_USERNAME \
--config tenant_name=$OS_TENANT_NAME \
--config password=$OS_PASSWORD \
- --config auth_url=http://$KEYSTONE_HOST:5000/v2.0
+ --config auth_url=$OS_AUTH_URL
+openstack congress datasource create keystone "heat" \
+ --config username=$OS_USERNAME \
+ --config tenant_name=$OS_TENANT_NAME \
+ --config password=$OS_PASSWORD \
+ --config auth_url=$OS_AUTH_URL
-echo "Install tox test dependencies"
+echo "$0: $(date) Install tox test dependencies"
if [ "$dist" == "Ubuntu" ]; then
- apt-get install -y libffi-dev libssl-dev
+ sudo apt-get install -y libffi-dev libssl-dev
else
- yum install -y libffi-devel openssl-devel
+ sudo yum install -y libffi-devel openssl-devel
fi
-echo "Run Congress tox Tests"
-cd ~/congress/congress
-tox -epy27
+# TODO: tox hangs ... disabled for now
+# at: ${PYTHON:-python} -m subunit.run discover -t ./ ./congress/tests
+echo "$0: $(date) Run Congress tox Tests"
+#cd /opt/congress/congress
+#sudo tox -epy27
set +x #echo off