| ... | ... |
@@ -73,7 +73,7 @@ does not run if started as root. |
| 73 | 73 |
This is a recent change (Oct 2013) from the previous behaviour of |
| 74 | 74 |
automatically creating a ``stack`` user. Automatically creating |
| 75 | 75 |
user accounts is not the right response to running as root, so |
| 76 |
-that bit is now an explicit step using ``tools/create-stack-user.sh``. |
|
| 76 |
+that bit is now an explicit step using ``tools/create-stack-user.sh``. |
|
| 77 | 77 |
Run that (as root!) or just check it out to see what DevStack's |
| 78 | 78 |
expectations are for the account it runs under. Many people simply |
| 79 | 79 |
use their usual login (the default 'ubuntu' login on a UEC image |
| ... | ... |
@@ -253,10 +253,6 @@ If tempest has been successfully configured, a basic set of smoke tests can be r |
| 253 | 253 |
|
| 254 | 254 |
If you would like to use Xenserver as the hypervisor, please refer to the instructions in `./tools/xen/README.md`. |
| 255 | 255 |
|
| 256 |
-# DevStack on Docker |
|
| 257 |
- |
|
| 258 |
-If you would like to use Docker as the hypervisor, please refer to the instructions in `./tools/docker/README.md`. |
|
| 259 |
- |
|
| 260 | 256 |
# Additional Projects |
| 261 | 257 |
|
| 262 | 258 |
DevStack has a hook mechanism to call out to a dispatch script at specific |
| ... | ... |
@@ -44,9 +44,6 @@ source $TOP_DIR/exerciserc |
| 44 | 44 |
# the exercise is skipped |
| 45 | 45 |
is_service_enabled cinder || exit 55 |
| 46 | 46 |
|
| 47 |
-# Also skip if the hypervisor is Docker |
|
| 48 |
-[[ "$VIRT_DRIVER" == "docker" ]] && exit 55 |
|
| 49 |
- |
|
| 50 | 47 |
# Instance type to create |
| 51 | 48 |
DEFAULT_INSTANCE_TYPE=${DEFAULT_INSTANCE_TYPE:-m1.tiny}
|
| 52 | 49 |
|
| ... | ... |
@@ -40,9 +40,6 @@ source $TOP_DIR/exerciserc |
| 40 | 40 |
# the exercise is skipped |
| 41 | 41 |
is_service_enabled n-api || exit 55 |
| 42 | 42 |
|
| 43 |
-# Skip if the hypervisor is Docker |
|
| 44 |
-[[ "$VIRT_DRIVER" == "docker" ]] && exit 55 |
|
| 45 |
- |
|
| 46 | 43 |
# Instance type to create |
| 47 | 44 |
DEFAULT_INSTANCE_TYPE=${DEFAULT_INSTANCE_TYPE:-m1.tiny}
|
| 48 | 45 |
|
| ... | ... |
@@ -40,9 +40,6 @@ source $TOP_DIR/exerciserc |
| 40 | 40 |
# the exercise is skipped |
| 41 | 41 |
is_service_enabled n-api || exit 55 |
| 42 | 42 |
|
| 43 |
-# Skip if the hypervisor is Docker |
|
| 44 |
-[[ "$VIRT_DRIVER" == "docker" ]] && exit 55 |
|
| 45 |
- |
|
| 46 | 43 |
# Instance type to create |
| 47 | 44 |
DEFAULT_INSTANCE_TYPE=${DEFAULT_INSTANCE_TYPE:-m1.tiny}
|
| 48 | 45 |
|
| ... | ... |
@@ -41,9 +41,6 @@ source $TOP_DIR/exerciserc |
| 41 | 41 |
# exercise is skipped. |
| 42 | 42 |
is_service_enabled cinder || exit 55 |
| 43 | 43 |
|
| 44 |
-# Also skip if the hypervisor is Docker |
|
| 45 |
-[[ "$VIRT_DRIVER" == "docker" ]] && exit 55 |
|
| 46 |
- |
|
| 47 | 44 |
# Instance type to create |
| 48 | 45 |
DEFAULT_INSTANCE_TYPE=${DEFAULT_INSTANCE_TYPE:-m1.tiny}
|
| 49 | 46 |
|
| 50 | 47 |
deleted file mode 100644 |
| ... | ... |
@@ -1,132 +0,0 @@ |
| 1 |
-# lib/nova_plugins/docker |
|
| 2 |
-# Configure the Docker hypervisor |
|
| 3 |
- |
|
| 4 |
-# Enable with: |
|
| 5 |
-# |
|
| 6 |
-# VIRT_DRIVER=docker |
|
| 7 |
- |
|
| 8 |
-# Dependencies: |
|
| 9 |
-# |
|
| 10 |
-# - ``functions`` file |
|
| 11 |
-# - ``nova`` and ``glance`` configurations |
|
| 12 |
- |
|
| 13 |
-# install_nova_hypervisor - install any external requirements |
|
| 14 |
-# configure_nova_hypervisor - make configuration changes, including those to other services |
|
| 15 |
-# start_nova_hypervisor - start any external services |
|
| 16 |
-# stop_nova_hypervisor - stop any external services |
|
| 17 |
-# cleanup_nova_hypervisor - remove transient data and cache |
|
| 18 |
- |
|
| 19 |
-# Save trace setting |
|
| 20 |
-MY_XTRACE=$(set +o | grep xtrace) |
|
| 21 |
-set +o xtrace |
|
| 22 |
- |
|
| 23 |
- |
|
| 24 |
-# Defaults |
|
| 25 |
-# -------- |
|
| 26 |
- |
|
| 27 |
-# Set up default directories |
|
| 28 |
-DOCKER_DIR=$DEST/docker |
|
| 29 |
- |
|
| 30 |
-DOCKER_UNIX_SOCKET=/var/run/docker.sock |
|
| 31 |
-DOCKER_PID_FILE=/var/run/docker.pid |
|
| 32 |
-DOCKER_REGISTRY_PORT=${DOCKER_REGISTRY_PORT:-5042}
|
|
| 33 |
- |
|
| 34 |
-DOCKER_IMAGE=${DOCKER_IMAGE:-cirros:latest}
|
|
| 35 |
-DOCKER_IMAGE_NAME=$DEFAULT_IMAGE_NAME |
|
| 36 |
-DOCKER_REGISTRY_IMAGE=${DOCKER_REGISTRY_IMAGE:-registry:latest}
|
|
| 37 |
-DOCKER_REGISTRY_IMAGE_NAME=registry |
|
| 38 |
-DOCKER_REPOSITORY_NAME=${SERVICE_HOST}:${DOCKER_REGISTRY_PORT}/${DOCKER_IMAGE_NAME}
|
|
| 39 |
- |
|
| 40 |
-DOCKER_APT_REPO=${DOCKER_APT_REPO:-https://get.docker.io/ubuntu}
|
|
| 41 |
- |
|
| 42 |
- |
|
| 43 |
-# Entry Points |
|
| 44 |
-# ------------ |
|
| 45 |
- |
|
| 46 |
-# clean_nova_hypervisor - Clean up an installation |
|
| 47 |
-function cleanup_nova_hypervisor {
|
|
| 48 |
- stop_service docker |
|
| 49 |
- |
|
| 50 |
- # Clean out work area |
|
| 51 |
- sudo rm -rf /var/lib/docker |
|
| 52 |
-} |
|
| 53 |
- |
|
| 54 |
-# configure_nova_hypervisor - Set config files, create data dirs, etc |
|
| 55 |
-function configure_nova_hypervisor {
|
|
| 56 |
- iniset $NOVA_CONF DEFAULT compute_driver docker.DockerDriver |
|
| 57 |
- iniset $GLANCE_API_CONF DEFAULT container_formats ami,ari,aki,bare,ovf,docker |
|
| 58 |
-} |
|
| 59 |
- |
|
| 60 |
-# is_docker_running - Return 0 (true) if Docker is running, otherwise 1 |
|
| 61 |
-function is_docker_running {
|
|
| 62 |
- local docker_pid |
|
| 63 |
- if [ -f "$DOCKER_PID_FILE" ]; then |
|
| 64 |
- docker_pid=$(cat "$DOCKER_PID_FILE") |
|
| 65 |
- fi |
|
| 66 |
- if [[ -z "$docker_pid" ]] || ! ps -p "$docker_pid" | grep [d]ocker; then |
|
| 67 |
- return 1 |
|
| 68 |
- fi |
|
| 69 |
- return 0 |
|
| 70 |
-} |
|
| 71 |
- |
|
| 72 |
-# install_nova_hypervisor() - Install external components |
|
| 73 |
-function install_nova_hypervisor {
|
|
| 74 |
- # So far this is Ubuntu only |
|
| 75 |
- if ! is_ubuntu; then |
|
| 76 |
- die $LINENO "Docker is only supported on Ubuntu at this time" |
|
| 77 |
- fi |
|
| 78 |
- |
|
| 79 |
- # Make sure Docker is installed |
|
| 80 |
- if ! is_package_installed lxc-docker; then |
|
| 81 |
- die $LINENO "Docker is not installed. Please run tools/docker/install_docker.sh" |
|
| 82 |
- fi |
|
| 83 |
- |
|
| 84 |
- if ! (is_docker_running); then |
|
| 85 |
- die $LINENO "Docker not running" |
|
| 86 |
- fi |
|
| 87 |
-} |
|
| 88 |
- |
|
| 89 |
-# start_nova_hypervisor - Start any required external services |
|
| 90 |
-function start_nova_hypervisor {
|
|
| 91 |
- if ! (is_docker_running); then |
|
| 92 |
- die $LINENO "Docker not running" |
|
| 93 |
- fi |
|
| 94 |
- |
|
| 95 |
- # Start the Docker registry container |
|
| 96 |
- docker run -d -p ${DOCKER_REGISTRY_PORT}:5000 \
|
|
| 97 |
- -e SETTINGS_FLAVOR=openstack -e OS_USERNAME=${OS_USERNAME} \
|
|
| 98 |
- -e OS_PASSWORD=${OS_PASSWORD} -e OS_TENANT_NAME=${OS_TENANT_NAME} \
|
|
| 99 |
- -e OS_GLANCE_URL="${SERVICE_PROTOCOL}://${GLANCE_HOSTPORT}" \
|
|
| 100 |
- -e OS_AUTH_URL=${OS_AUTH_URL} \
|
|
| 101 |
- $DOCKER_REGISTRY_IMAGE_NAME ./docker-registry/run.sh |
|
| 102 |
- |
|
| 103 |
- echo "Waiting for docker registry to start..." |
|
| 104 |
- DOCKER_REGISTRY=${SERVICE_HOST}:${DOCKER_REGISTRY_PORT}
|
|
| 105 |
- if ! timeout $SERVICE_TIMEOUT sh -c "while ! curl -s $DOCKER_REGISTRY; do sleep 1; done"; then |
|
| 106 |
- die $LINENO "docker-registry did not start" |
|
| 107 |
- fi |
|
| 108 |
- |
|
| 109 |
- # Tag image if not already tagged |
|
| 110 |
- if ! docker images | grep $DOCKER_REPOSITORY_NAME; then |
|
| 111 |
- docker tag $DOCKER_IMAGE_NAME $DOCKER_REPOSITORY_NAME |
|
| 112 |
- fi |
|
| 113 |
- |
|
| 114 |
- # Make sure we copied the image in Glance |
|
| 115 |
- if ! (glance image-show "$DOCKER_IMAGE"); then |
|
| 116 |
- docker push $DOCKER_REPOSITORY_NAME |
|
| 117 |
- fi |
|
| 118 |
-} |
|
| 119 |
- |
|
| 120 |
-# stop_nova_hypervisor - Stop any external services |
|
| 121 |
-function stop_nova_hypervisor {
|
|
| 122 |
- # Stop the docker registry container |
|
| 123 |
- docker kill $(docker ps | grep docker-registry | cut -d' ' -f1) |
|
| 124 |
-} |
|
| 125 |
- |
|
| 126 |
- |
|
| 127 |
-# Restore xtrace |
|
| 128 |
-$MY_XTRACE |
|
| 129 |
- |
|
| 130 |
-# Local variables: |
|
| 131 |
-# mode: shell-script |
|
| 132 |
-# End: |
| ... | ... |
@@ -320,9 +320,6 @@ case "$VIRT_DRIVER" in |
| 320 | 320 |
openvz) |
| 321 | 321 |
DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-ubuntu-12.04-x86_64}
|
| 322 | 322 |
IMAGE_URLS=${IMAGE_URLS:-"http://download.openvz.org/template/precreated/ubuntu-12.04-x86_64.tar.gz"};;
|
| 323 |
- docker) |
|
| 324 |
- DEFAULT_IMAGE_NAME=${DEFAULT_IMAGE_NAME:-cirros}
|
|
| 325 |
- IMAGE_URLS=${IMAGE_URLS:-};;
|
|
| 326 | 323 |
libvirt) |
| 327 | 324 |
case "$LIBVIRT_TYPE" in |
| 328 | 325 |
lxc) # the cirros root disk in the uec tarball is empty, so it will not work for lxc |
| 329 | 326 |
deleted file mode 100644 |
| ... | ... |
@@ -1,13 +0,0 @@ |
| 1 |
-# DevStack on Docker |
|
| 2 |
- |
|
| 3 |
-Using Docker as Nova's hypervisor requries two steps: |
|
| 4 |
- |
|
| 5 |
-* Configure DevStack by adding the following to `localrc`:: |
|
| 6 |
- |
|
| 7 |
- VIRT_DRIVER=docker |
|
| 8 |
- |
|
| 9 |
-* Download and install the Docker service and images:: |
|
| 10 |
- |
|
| 11 |
- tools/docker/install_docker.sh |
|
| 12 |
- |
|
| 13 |
-After this, `stack.sh` should run as normal. |
| 14 | 1 |
deleted file mode 100755 |
| ... | ... |
@@ -1,68 +0,0 @@ |
| 1 |
-#!/usr/bin/env bash |
|
| 2 |
- |
|
| 3 |
-# **install_docker.sh** - Do the initial Docker installation and configuration |
|
| 4 |
- |
|
| 5 |
-# install_docker.sh |
|
| 6 |
-# |
|
| 7 |
-# Install docker package and images |
|
| 8 |
-# * downloads a base busybox image and a glance registry image if necessary |
|
| 9 |
-# * install the images in Docker's image cache |
|
| 10 |
- |
|
| 11 |
- |
|
| 12 |
-# Keep track of the current directory |
|
| 13 |
-SCRIPT_DIR=$(cd $(dirname "$0") && pwd) |
|
| 14 |
-TOP_DIR=$(cd $SCRIPT_DIR/../..; pwd) |
|
| 15 |
- |
|
| 16 |
-# Import common functions |
|
| 17 |
-source $TOP_DIR/functions |
|
| 18 |
- |
|
| 19 |
-# Load local configuration |
|
| 20 |
-source $TOP_DIR/stackrc |
|
| 21 |
- |
|
| 22 |
-FILES=$TOP_DIR/files |
|
| 23 |
- |
|
| 24 |
-# Get our defaults |
|
| 25 |
-source $TOP_DIR/lib/nova_plugins/hypervisor-docker |
|
| 26 |
- |
|
| 27 |
-SERVICE_TIMEOUT=${SERVICE_TIMEOUT:-60}
|
|
| 28 |
- |
|
| 29 |
- |
|
| 30 |
-# Install Docker Service |
|
| 31 |
-# ====================== |
|
| 32 |
- |
|
| 33 |
-if is_fedora; then |
|
| 34 |
- install_package docker-io socat |
|
| 35 |
-else |
|
| 36 |
- # Stop the auto-repo updates and do it when required here |
|
| 37 |
- NO_UPDATE_REPOS=True |
|
| 38 |
- |
|
| 39 |
- # Set up home repo |
|
| 40 |
- curl https://get.docker.io/gpg | sudo apt-key add - |
|
| 41 |
- install_package python-software-properties && \ |
|
| 42 |
- sudo sh -c "echo deb $DOCKER_APT_REPO docker main > /etc/apt/sources.list.d/docker.list" |
|
| 43 |
- apt_get update |
|
| 44 |
- install_package --force-yes lxc-docker socat |
|
| 45 |
-fi |
|
| 46 |
- |
|
| 47 |
-# Start the daemon - restart just in case the package ever auto-starts... |
|
| 48 |
-restart_service docker |
|
| 49 |
- |
|
| 50 |
-echo "Waiting for docker daemon to start..." |
|
| 51 |
-DOCKER_GROUP=$(groups | cut -d' ' -f1) |
|
| 52 |
-CONFIGURE_CMD="while ! /bin/echo -e 'GET /v1.3/version HTTP/1.0\n\n' | socat - unix-connect:$DOCKER_UNIX_SOCKET 2>/dev/null | grep -q '200 OK'; do |
|
| 53 |
- # Set the right group on docker unix socket before retrying |
|
| 54 |
- sudo chgrp $DOCKER_GROUP $DOCKER_UNIX_SOCKET |
|
| 55 |
- sudo chmod g+rw $DOCKER_UNIX_SOCKET |
|
| 56 |
- sleep 1 |
|
| 57 |
-done" |
|
| 58 |
-if ! timeout $SERVICE_TIMEOUT sh -c "$CONFIGURE_CMD"; then |
|
| 59 |
- die $LINENO "docker did not start" |
|
| 60 |
-fi |
|
| 61 |
- |
|
| 62 |
-# Get guest container image |
|
| 63 |
-docker pull $DOCKER_IMAGE |
|
| 64 |
-docker tag $DOCKER_IMAGE $DOCKER_IMAGE_NAME |
|
| 65 |
- |
|
| 66 |
-# Get docker-registry image |
|
| 67 |
-docker pull $DOCKER_REGISTRY_IMAGE |
|
| 68 |
-docker tag $DOCKER_REGISTRY_IMAGE $DOCKER_REGISTRY_IMAGE_NAME |