From dcb607d3690f78209afdf5868dc3158f2a5f4722 Mon Sep 17 00:00:00 2001 From: Ian Main Date: Thu, 12 Mar 2015 13:22:47 -0700 Subject: [PATCH] Complete docker compose setup. This change proposes a minimal openstack deployment stood up using docker-compose. Included is a script to generate the necessary environment variables for use by the containers as well as an 'openrc'. There is also a script which demonstrates starting the included services. We have this working locally using patched containers and can start instances with networking etc. However, there are several changes required to various containers that will need to be made to get this working. We are also using Steven Dake's patches to docker-compose to allow the use of pid=host. I propose we either merge this change or build changes on top of this to get a functioning installation. Co-authored-by: Ryan Hallisey Change-Id: I5e6051054d31edf9840c3a22502d4a7963893f29 --- compose/README.md | 25 +++++++++++ compose/genenv.sh | 106 ++++++++++++++++++++++++++++++++++++++++++++++ compose/start.sh | 85 +++++++++++++++++++++++++++++++++++++ 3 files changed, 216 insertions(+) create mode 100644 compose/README.md create mode 100755 compose/genenv.sh create mode 100755 compose/start.sh diff --git a/compose/README.md b/compose/README.md new file mode 100644 index 0000000000..ba0ce74e57 --- /dev/null +++ b/compose/README.md @@ -0,0 +1,25 @@ +Docker compose +============== + +These scripts and docker compose files can be used to stand up a simple +installation of openstack. Running the 'genenv.sh' script creates an +'openstack.env' suitable for running on a single host system as well as 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 'start.sh' 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 +# nova network-create vmnet --fixed-range-v4=10.0.0.0/24 --bridge=br100 --multi-host=T +# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 +# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 +# +# nova keypair-add mykey > mykey.pem +# chmod 600 mykey.pem +# nova boot --flavor m1.medium --key_name mykey --image puffy_clouds instance_name +# ssh -i mykey.pem cirros@ +``` diff --git a/compose/genenv.sh b/compose/genenv.sh new file mode 100755 index 0000000000..76582bddcc --- /dev/null +++ b/compose/genenv.sh @@ -0,0 +1,106 @@ +#!/bin/bash +# +# This script generates a minimal set of environment variables to allow +# the openstack containers to operate. It is creating a configuration +# suitable for an all-in-one installation of openstack. +# +# It also creates a suitable 'openrc' for use with the installed system. + +MY_IP=$(ip route get $(ip route | awk '$1 == "default" {print $3}') | + awk '$4 == "src" {print $5}') + +MY_DEV=$(ip route get $(ip route | awk '$1 == "default" {print $3}') | + awk '$4 == "src" {print $3}') + +echo MY_IP=$MY_IP +echo MY_DEV=$MY_DEV + +# Database +HOST_IP=$MY_IP +MYSQL_ROOT_PASSWORD=kolla +PASSWORD=12345 + +# Host +ADMIN_TENANT_NAME=admin +PUBLIC_IP=$HOST_IP + +# RabbitMQ +RABBITMQ_SERVICE_HOST=$HOST_IP +RABBIT_USER=guest +RABBIT_PASSWORD=guest + +# Keystone +KEYSTONE_ADMIN_TOKEN=$PASSWORD +KEYSTONE_DB_PASSWORD=kolla +KEYSTONE_ADMIN_PASSWORD=$PASSWORD +KEYSTONE_PUBLIC_SERVICE_HOST=$HOST_IP +KEYSTONE_ADMIN_SERVICE_HOST=$HOST_IP +KEYSTONE_AUTH_PROTOCOL=http + +# Glance +GLANCE_DB_NAME=glance +GLANCE_DB_USER=glance +GLANCE_DB_PASSWORD=kolla +GLANCE_KEYSTONE_USER=glance +GLANCE_KEYSTONE_PASSWORD=glance +GLANCE_API_SERVICE_HOST=$HOST_IP +GLANCE_REGISTRY_SERVICE_HOST=$HOST_IP + +# Nova +NOVA_DB_PASSWORD=nova +NOVA_DB_NAME=nova +NOVA_DB_USER=nova +NOVA_KEYSTONE_USER=nova +NOVA_KEYSTONE_PASSWORD=nova +NOVA_API_SERVICE_HOST=$HOST_IP +NOVA_EC2_SERVICE_HOST=$HOST_IP +NOVA_PUBLIC_INTERFACE=$MY_DEV +NOVA_FLAT_INTERFACE=$MY_DEV +CONFIG_NETWORK=True + +cat > openrc < openstack.env < mykey.pem +# chmod 600 mykey.pem +# nova boot --flavor m1.medium --key_name mykey --image puffy_clouds newInstanceName