From 75a6c3bc9f9569b615b055597e9d73a9bccef287 Mon Sep 17 00:00:00 2001 From: Martin André Date: Wed, 15 Apr 2015 17:24:04 +0900 Subject: Introduce `tools/kolla` to interact with kolla This is supposed to prevent proliferation of scripts in "tools" directory and reduce code duplication. This first patch replaces tools/{start,stop,pull,status} scripts and more commands are to be added in the future. Change-Id: I3d99cf5033be8631d8e6f32a4c34d3b5ffcae7e8 --- tools/kolla | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/pull | 102 ------------------------------------------- tools/start | 92 --------------------------------------- tools/status | 47 -------------------- tools/stop | 44 ------------------- 5 files changed, 140 insertions(+), 285 deletions(-) create mode 100755 tools/kolla delete mode 100755 tools/pull delete mode 100755 tools/start delete mode 100755 tools/status delete mode 100755 tools/stop (limited to 'tools') diff --git a/tools/kolla b/tools/kolla new file mode 100755 index 000000000..d8ebf508e --- /dev/null +++ b/tools/kolla @@ -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 <&2 - exit 1 -fi - -usage () { - cat <&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 diff --git a/tools/status b/tools/status deleted file mode 100755 index 8a1a18f7c..000000000 --- a/tools/status +++ /dev/null @@ -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 diff --git a/tools/stop b/tools/stop deleted file mode 100755 index 3a3db3d51..000000000 --- a/tools/stop +++ /dev/null @@ -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 -- cgit v1.2.3