Merge "Introduce tools/kolla to interact with kolla"

This commit is contained in:
Jenkins 2015-04-21 16:37:55 +00:00 committed by Gerrit Code Review
commit a2eb42744b
8 changed files with 146 additions and 291 deletions

View File

@ -7,10 +7,10 @@ installation of openstack. Running the 'tools/genenv' script creates an
'openrc' to allow access to the installation. 'openrc' to allow access to the installation.
Once you have run that you can either manually start the containers using the Once you have run that you can either manually start the containers using the
'docker-compose' command or try the 'tools/start' script which tries to start them 'docker-compose' command or try the 'tools/kolla start' script which tries to
all in a reasonable order, waiting at key points for services to become start them all in a reasonable order, waiting at key points for services to
available. Once stood up you can issue the typical openstack commands to use become available. Once stood up you can issue the typical openstack commands
the installation: to use the installation:
``` ```
# source openrc # source openrc

View File

@ -127,7 +127,7 @@ you can edit for a different setup.
Next, run the start script. Next, run the start script.
$ ./tools/start $ ./tools/kolla start
The `start` script is responsible for starting the containers The `start` script is responsible for starting the containers
using `docker-compose -f <osp-service-container> up -d`. using `docker-compose -f <osp-service-container> up -d`.

View File

@ -61,7 +61,7 @@ you can edit for a different setup.
Next, run the start script. Next, run the start script.
$ ./tools/start $ ./tools/kolla start
The `start` script is responsible for starting the containers The `start` script is responsible for starting the containers
using `docker-compose -f <osp-service-container> up -d`. using `docker-compose -f <osp-service-container> up -d`.

140
tools/kolla Executable file
View File

@ -0,0 +1,140 @@
#!/bin/bash
#
# This script can be used to interact with kolla.
if [[ $EUID -ne 0 ]]; then
echo "You must execute this script as root." 1>&2
exit 1
fi
# Move to top level directory
REAL_PATH=$(python -c "import os,sys;print os.path.realpath('$0')")
cd "$(dirname "$REAL_PATH")/.."
NETWORK_MANAGER=$(grep -sri NETWORK_MANAGER ./compose/openstack.env | cut -f2 -d'=')
if [[ -z "$NETWORK_MANAGER" ]]; then
echo 'No network manager defined in ./compose/openstack.env, defaulting to "neutron".'
NETWORK_MANAGER="neutron"
fi
function process {
local service=$1
echo "$ACTION $service"
docker-compose -f ./compose/${service}.yml $COMPOSE_CMD
}
function process_all {
process rabbit
process mariadb
process keystone
process glance-api-registry
process nova-api-conductor-scheduler
if [[ "${NETWORK_MANAGER}" == "nova" ]] ; then
process nova-compute-network
else
# Defaulting to neutron
process nova-compute
process neutron-server
process neutron-agents
fi
process heat-api-engine
process horizon
}
function check_selinux {
# Check for SELinux in Enforcing mode and exit if found
if [[ -x /usr/sbin/getenforce ]]; then
if [[ $(/usr/sbin/getenforce) == "Enforcing" ]]; then
echo "You must execute this script without SELinux enforcing mode."
echo "Turn off SELinux enforcing mode by running:"
echo "$ sudo setenforce permissive"
exit 1
fi
fi
}
function pre_start {
check_selinux
if [[ -r ./openrc ]]; then
# Source openrc for commands
source ./openrc
else
echo 'Could not find ./openrc; bootstrap your environment with "./tools/genenv".'
exit 1
fi
}
function post_start {
IMAGE_URL=http://download.cirros-cloud.net/0.3.3/
IMAGE=cirros-0.3.3-x86_64-disk.img
if ! [ -f "$IMAGE" ]; then
curl -L -o ./$IMAGE $IMAGE_URL/$IMAGE
fi
until keystone user-list | grep glance
do
echo "Waiting for OpenStack services to become available"
sleep 2
done
sleep 3
echo Creating glance image.
glance image-create --name cirros --is-public false --disk-format qcow2 --container-format bare --file ./$IMAGE
echo Example usage:
echo
echo nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
echo nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
echo nova network-create vmnet --fixed-range-v4=10.0.0.0/24 --bridge=br100 --multi-host=T
echo
echo nova keypair-add mykey > mykey.pem
echo chmod 600 mykey.pem
echo nova boot --flavor m1.medium --key_name mykey --image cirros kolla_vm
}
function usage {
cat <<EOF
Usage: $0 COMMAND
Commands:
pull Pull all of the Docker images
start Start all kolla containers
status List running kolla containers
stop Stop all kolla containers
EOF
}
case "$1" in
(pull)
ACTION="Pulling"
COMPOSE_CMD="pull"
process_all
;;
(start)
ACTION="Starting"
COMPOSE_CMD="up -d"
pre_start
process_all
post_start
;;
(status)
ACTION="Status of"
COMPOSE_CMD="ps"
process_all
;;
(stop)
ACTION="Stopping"
COMPOSE_CMD="stop"
process_all
;;
(*) usage
exit 0
;;
esac

View File

@ -1,102 +0,0 @@
#!/bin/bash
#
# This script can be used to pull all of the docker images for the
# containers that compose Kolla. This is primarily used to update
# containers after a rebuild. Run with the option docker or compose
# to select the pull tool.
if [[ $EUID -ne 0 ]]; then
echo "You must execute this script as root." 1>&2
exit 1
fi
usage () {
cat <<EOF
Usage: $0 [mode]
Options:
--docker, -d - Pull with docker client
--compose, -c - Pull with docker-compose client
EOF
}
case "$1" in
(''|--help|-h) usage
exit 0
;;
(--docker|-d)
shift
PULL_TOOL=docker
;;
(--compose|-c)
shift
PULL_TOOL=compose
;;
esac
# Move to top level directory
REAL_PATH=$(python -c "import os,sys;print os.path.realpath('$0')")
cd "$(dirname "$REAL_PATH")/.."
if [[ "${PULL_TOOL}" == 'compose' ]]; then
echo Pulling with docker-compose.
echo Pulling rabbitmq.
docker-compose -f ./compose/rabbitmq.yml pull
echo Pulling mariadb.
docker-compose -f ./compose/mariadb.yml pull
echo Pulling keystone.
docker-compose -f ./compose/keystone.yml pull
echo Pulling glance.
docker-compose -f ./compose/glance-api-registry.yml pull
echo Pulling nova controller.
docker-compose -f ./compose/nova-api-conductor-scheduler.yml pull
echo Pulling nova compute with nova networking.
docker-compose -f ./compose/nova-compute-network.yml pull
echo Pulling heat.
docker-compose -f ./compose/heat-api-engine.yml pull
echo Pulling Horizon.
docker-compose -f ./compose/horizon.yml pull
fi
if [[ "${PULL_TOOL}" == 'docker' ]]; then
echo Pulling mariadb.
docker pull kollaglue/centos-rdo-mariadb-data
docker pull kollaglue/centos-rdo-mariadb-app
echo Pulling keystone.
docker pull kollaglue/centos-rdo-keystone
echo Pulling glance.
docker pull kollaglue/centos-rdo-glance-api
docker pull kollaglue/centos-rdo-glance-registry
echo Pulling nova controller.
docker pull kollaglue/centos-rdo-nova-conductor
docker pull kollaglue/centos-rdo-nova-api
docker pull kollaglue/centos-rdo-nova-scheduler
echo Pulling nova compute with nova networking.
docker pull kollaglue/centos-rdo-nova-compute-data
docker pull kollaglue/centos-rdo-nova-libvirt
docker pull kollaglue/centos-rdo-nova-network
docker pull kollaglue/centos-rdo-nova-compute
echo Pulling heat.
docker pull kollaglue/centos-rdo-heat-api
docker pull kollaglue/centos-rdo-heat-engine
echo Pulling horizon.
docker pull kollaglue/centos-rdo-horizon
fi

View File

@ -1,92 +0,0 @@
#!/bin/bash
#
# This script can be used to start a minimal set of containers that allows
# you to boot an instance. Note that it requires that you have some openstack
# clients available: keystone, glance, and nova, as well as mysql to ensure
# services are up. You will also need these in order to interact with the
# installation once started.
if [[ $EUID -ne 0 ]]; then
echo "You must execute this script as root." 1>&2
exit 1
fi
# Move to top level directory
REAL_PATH=$(python -c "import os,sys;print os.path.realpath('$0')")
cd "$(dirname "$REAL_PATH")/.."
# Check for SELinux in Enforcing mode and exit if found
if [[ -x /usr/sbin/getenforce ]]; then
if [[ $(/usr/sbin/getenforce) == "Enforcing" ]]; then
echo "You must execute this script without SELinux enforcing mode."
echo "Turn off SELinux enforcing mode by running:"
echo "$ sudo setenforce permissive"
exit 1
fi
fi
MY_IP=$(ip route get $(ip route | awk '$1 == "default" {print $3}') |
awk '$4 == "src" {print $5}')
NETWORK_MANAGER=$(grep -ri NETWORK_MANAGER compose/openstack.env | cut -f2 -d'=')
# Source openrc for commands
source ./openrc
echo Starting rabbitmq.
docker-compose -f ./compose/rabbitmq.yml up -d
echo Starting mariadb.
docker-compose -f ./compose/mariadb.yml up -d
echo Starting keystone.
docker-compose -f ./compose/keystone.yml up -d
echo Starting glance.
docker-compose -f ./compose/glance-api-registry.yml up -d
echo Starting nova.
docker-compose -f ./compose/nova-api-conductor-scheduler.yml up -d
if [[ "${NETWORK_MANAGER}" == "nova" ]] ; then
echo Starting nova compute with nova networking.
docker-compose -f ./compose/nova-compute-network.yml up -d
elif [[ "${NETWORK_MANAGER}" == "neutron" ]] ; then
echo Starting nova compute with neutron networking.
docker-compose -f ./compose/nova-compute.yml up -d
docker-compose -f ./compose/neutron-server.yml up -d
docker-compose -f ./compose/neutron-agents.yml up -d
fi
echo Starting heat.
docker-compose -f ./compose/heat-api-engine.yml up -d
echo Starting Horizon.
docker-compose -f ./compose/horizon.yml up -d
IMAGE_URL=http://download.cirros-cloud.net/0.3.3/
IMAGE=cirros-0.3.3-x86_64-disk.img
if ! [ -f "$IMAGE" ]; then
curl -L -o ./$IMAGE $IMAGE_URL/$IMAGE
fi
until keystone user-list | grep glance
do
echo "Waiting for OpenStack services to become available"
sleep 2
done
sleep 3
echo Creating glance image.
glance image-create --name cirros --is-public false --disk-format qcow2 --container-format bare --file ./$IMAGE
echo Example usage:
echo
echo nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
echo nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
echo nova network-create vmnet --fixed-range-v4=10.0.0.0/24 --bridge=br100 --multi-host=T
echo
echo nova keypair-add mykey > mykey.pem
echo chmod 600 mykey.pem
echo nova boot --flavor m1.medium --key_name mykey --image cirros kolla_vm

View File

@ -1,47 +0,0 @@
#!/bin/bash
#
# This script can be used to check the Kolla containers deployed
# from the start script.
if [[ $EUID -ne 0 ]]; then
echo "You must execute this script as root." 1>&2
exit 1
fi
# Move to top level directory
REAL_PATH=$(python -c "import os,sys;print os.path.realpath('$0')")
cd "$(dirname "$REAL_PATH")/.."
# Check what network manager is set in the ENV file.
NETWORK_MANAGER=$(grep -ri NETWORK_MANAGER compose/openstack.env | cut -f2 -d'=')
echo Checking rabbitmq.
docker-compose -f ./compose/rabbitmq.yml ps
echo Checking mariadb.
docker-compose -f ./compose/mariadb.yml ps
echo Checking keystone.
docker-compose -f ./compose/keystone.yml ps
echo Checking glance.
docker-compose -f ./compose/glance-api-registry.yml ps
echo Checking nova.
docker-compose -f ./compose/nova-api-conductor-scheduler.yml ps
if [[ "${NETWORK_MANAGER}" == "nova" ]] ; then
echo Checking nova compute with nova networking.
docker-compose -f ./compose/nova-compute-network.yml ps
elif [[ "${NETWORK_MANAGER}" == "neutron" ]] ; then
echo Checking nova compute with neutron networking.
docker-compose -f ./compose/nova-compute.yml ps
docker-compose -f ./compose/neutron-server.yml ps
docker-compose -f ./compose/neutron-agents.yml ps
fi
echo Checking heat.
docker-compose -f ./compose/heat-api-engine.yml ps
echo Checking Horizon.
docker-compose -f ./compose/horizon.yml ps

View File

@ -1,44 +0,0 @@
#!/bin/bash
#
# This script can be used to start a minimal set of containers that allows
# you to boot an instance. Note that it requires that you have some openstack
# clients available: keystone, glance, and nova, as well as mysql to ensure
# services are up. You will also need these in order to interact with the
# installation once started.
# Move to top level directory
REAL_PATH=$(python -c "import os,sys;print os.path.realpath('$0')")
cd "$(dirname "$REAL_PATH")/.."
NETWORK_MANAGER=$(grep -ri NETWORK_MANAGER compose/openstack.env | cut -f2 -d'=')
echo Stopping rabbitmq.
docker-compose -f ./compose/rabbitmq.yml stop
echo Stopping mariadb.
docker-compose -f ./compose/mariadb.yml stop
echo Stopping keystone.
docker-compose -f ./compose/keystone.yml stop
echo Stopping glance.
docker-compose -f ./compose/glance-api-registry.yml stop
echo Stopping nova.
docker-compose -f ./compose/nova-api-conductor-scheduler.yml stop
if [[ "${NETWORK_MANAGER}" == "nova" ]] ; then
echo Stopping nova compute with nova networking.
docker-compose -f ./compose/nova-compute-network.yml stop
elif [[ "${NETWORK_MANAGER}" == "neutron" ]] ; then
echo Stopping nova compute with neutron networking.
docker-compose -f ./compose/nova-compute.yml stop
docker-compose -f ./compose/neutron-server.yml up -d
docker-compose -f ./compose/neutron-agents.yml stop
fi
echo Stopping heat.
docker-compose -f ./compose/heat-api-engine.yml stop
echo Stopping Horizon.
docker-compose -f ./compose/horizon.yml stop