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.
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
all in a reasonable order, waiting at key points for services to become
available. Once stood up you can issue the typical openstack commands to use
the installation:
'docker-compose' command or try the 'tools/kolla start' script which tries to
start them all in a reasonable order, waiting at key points for services to
become available. Once stood up you can issue the typical openstack commands
to use the installation:
```
# source openrc

View File

@ -127,7 +127,7 @@ you can edit for a different setup.
Next, run the start script.
$ ./tools/start
$ ./tools/kolla start
The `start` script is responsible for starting the containers
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.
$ ./tools/start
$ ./tools/kolla start
The `start` script is responsible for starting the containers
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