diff options
Diffstat (limited to 'components/congress/install/bash/install_congress_1.sh')
-rw-r--r-- | components/congress/install/bash/install_congress_1.sh | 333 |
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 |