diff options
| author | Paul Bourke <paul.bourke@oracle.com> | 2015-06-17 11:14:59 +0000 |
|---|---|---|
| committer | Paul Bourke <paul.bourke@oracle.com> | 2015-06-19 17:12:05 +0000 |
| commit | 897337cdd61f1702aa7e68da0466804bf0d21a86 (patch) | |
| tree | d8489ef0f286ff69f10ebe0b42eca6cf8b1cc123 /docker/centos/binary/keystone | |
| parent | c2b05b576f45ddf432571f817be45e6bcb188f75 (diff) | |
| download | kolla-897337cdd61f1702aa7e68da0466804bf0d21a86.tar.gz kolla-897337cdd61f1702aa7e68da0466804bf0d21a86.zip | |
Symlink all non Dockerfile resources in images
The only files in the docker image directories that differ majorly between
distros are the Dockerfiles (e.g. different package manager mechanisms,
different repo sources, etc).
The supporting files such as the start.sh/check.sh and config files should
largely stay the same between base images.
This change moves these files up into a "common" directory, and symlinks them
in the same way that the build script is managed. This means when adding a new
base distro only new Dockerfiles need to be created. Also, if a distro does
happen to require a vastly different start.sh script for example, one can
choose to simply not symlink to the common and instead drop in a custom one.
Implements: blueprint refactor-base-image-layout
Change-Id: Ic4db69d31ff54a1fb95af4853a2e5ae490064284
Diffstat (limited to 'docker/centos/binary/keystone')
| l---------[-rwxr-xr-x] | docker/centos/binary/keystone/check.sh | 13 | ||||
| l---------[-rwxr-xr-x] | docker/centos/binary/keystone/start.sh | 163 |
2 files changed, 2 insertions, 174 deletions
diff --git a/docker/centos/binary/keystone/check.sh b/docker/centos/binary/keystone/check.sh index ca4844784..fe8e7608c 100755..120000 --- a/docker/centos/binary/keystone/check.sh +++ b/docker/centos/binary/keystone/check.sh @@ -1,12 +1 @@ -#!/bin/bash - -RES=0 - -. /openrc -if ! keystone token-get > /dev/null; then - echo "ERROR: keystone token-get failed" >&2 - RES=1 -fi - -exit $RES - +../../../common/keystone/check.sh
\ No newline at end of file diff --git a/docker/centos/binary/keystone/start.sh b/docker/centos/binary/keystone/start.sh index 6dfebe060..ae34844ea 100755..120000 --- a/docker/centos/binary/keystone/start.sh +++ b/docker/centos/binary/keystone/start.sh @@ -1,162 +1 @@ -#!/bin/bash - -set -e - -# Run Kolla common script -echo "Running the kolla-common script" -. /opt/kolla/kolla-common.sh - -# Credentials, token, etc.. -: ${ADMIN_USER:=admin} -: ${ADMIN_USER_PASSWORD:=password} -: ${ADMIN_TENANT_NAME:=admin} -: ${KEYSTONE_USER:=keystone} -: ${KEYSTONE_ADMIN_PASSWORD:=password} -: ${KEYSTONE_ADMIN_TOKEN:=changeme} -# DB Settings -: ${INIT_DB:=true} -: ${KEYSTONE_DB_NAME:=keystone} -: ${KEYSTONE_DB_USER:=keystone} -: ${DB_ROOT_PASSWORD:=password} -: ${MARIADB_SERVICE_HOST:=$PUBLIC_IP} -: ${KEYSTONE_DB_PASSWORD:=password} -# Service Addresses/Ports/Version -: ${KEYSTONE_PUBLIC_SERVICE_HOST:=$PUBLIC_IP} -: ${KEYSTONE_ADMIN_SERVICE_HOST:=$PUBLIC_IP} -: ${KEYSTONE_PUBLIC_SERVICE_PORT:=5000} -: ${KEYSTONE_ADMIN_SERVICE_PORT:=35357} -: ${KEYSTONE_API_VERSION:=2.0} -# Logging -: ${LOG_FILE:=/var/log/keystone/keystone.log} -: ${VERBOSE_LOGGING:=true} -: ${DEBUG_LOGGING:=false} -: ${USE_STDERR:=false} -# Token provider, driver, etc.. -: ${TOKEN_PROVIDER:=uuid} -: ${TOKEN_DRIVER:=sql} - -## Check DB connectivity and required variables -echo "Checking connectivity to the DB" -fail_unless_db -echo "Checking for required variables" -check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_DB_PASSWORD \ - KEYSTONE_ADMIN_PASSWORD ADMIN_TENANT_NAME \ - KEYSTONE_PUBLIC_SERVICE_HOST KEYSTONE_ADMIN_SERVICE_HOST \ - PUBLIC_IP -dump_vars - -# Setup the Keystone DB -echo "Setting up Keystone DB" -mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" mysql <<EOF -CREATE DATABASE IF NOT EXISTS ${KEYSTONE_DB_NAME}; -GRANT ALL PRIVILEGES ON ${KEYSTONE_DB_NAME}.* TO - '${KEYSTONE_DB_USER}'@'%' IDENTIFIED BY '${KEYSTONE_DB_PASSWORD}' -EOF - -# File path and name used by crudini tool -cfg=/etc/keystone/keystone.conf - -# Token Configuration -echo "Configuring keystone.conf" -crudini --set $cfg \ - DEFAULT \ - admin_token \ - "${KEYSTONE_ADMIN_TOKEN}" - -# Database Configuration -crudini --set $cfg \ - database \ - connection \ - "mysql://${KEYSTONE_DB_USER}:${KEYSTONE_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${KEYSTONE_DB_NAME}" - -# Logging -crudini --del $cfg \ - DEFAULT \ - log_dir -crudini --set $cfg \ - DEFAULT \ - log_file \ - ${LOG_FILE} -crudini --set $cfg \ - DEFAULT \ - verbose \ - ${VERBOSE_LOGGING} -crudini --set $cfg \ - DEFAULT \ - debug \ - ${DEBUG_LOGGING} -crudini --set $cfg \ - DEFAULT \ - use_stderr \ - ${USE_STDERR} - -# Token Management -crudini --set $cfg \ - token \ - provider \ - keystone.token.providers."${TOKEN_PROVIDER}".Provider -crudini --set $cfg \ - token \ - driver \ - keystone.token.persistence.backends."${TOKEN_DRIVER}".Token -crudini --set $cfg \ - revoke \ - driver \ - keystone.contrib.revoke.backends."${TOKEN_DRIVER}".Revoke - -# Setup the openrc auth file -cat > /openrc <<EOF -export OS_AUTH_URL=http://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v${KEYSTONE_API_VERSION} -export OS_USERNAME=${KEYSTONE_USER} -export OS_PASSWORD=${KEYSTONE_ADMIN_PASSWORD} -export OS_TENANT_NAME=${ADMIN_TENANT_NAME} -EOF - -# Run PKI Setup script -echo "Setting up PKI" -/usr/bin/keystone-manage pki_setup --keystone-user keystone --keystone-group keystone - -# Fix permissions -chown -R keystone:keystone /var/log/keystone -chown -R keystone:keystone /etc/keystone/ssl -chmod -R o-rwx /etc/keystone/ssl - -# Initialize the Keystone DB -echo "Initializing Keystone DB" -if [ "${INIT_DB}" == "true" ] ; then - su -s /bin/bash -c "keystone-manage db_sync" keystone -fi - -# Start Keystone -echo "Starting Keystone" -/usr/bin/keystone-all & -PID=$! - -# Export Keystone service environment variables -export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}" -export SERVICE_ENDPOINT="http://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v${KEYSTONE_API_VERSION}" - -# Check to make sure the service is running -echo "Verifying Keystone is running" -while ! curl -o /dev/null -s --fail ${SERVICE_ENDPOINT}; do - echo "waiting for Keystone @ ${SERVICE_ENDPOINT}" - sleep 1; -done -echo "keystone is active @ ${SERVICE_ENDPOINT}" - -# Create Keystone tenant, user, role, service and endpoints -echo "Creating Keystone tenant, user, role, service and endpoints" -crux user-create --update \ - -n ${ADMIN_USER} -p "${ADMIN_USER_PASSWORD}" \ - -t ${ADMIN_TENANT_NAME} -r admin -crux user-create --update \ - -n ${KEYSTONE_USER} -p "${KEYSTONE_ADMIN_PASSWORD}" \ - -t ${ADMIN_TENANT_NAME} -r admin -crux endpoint-create --remove-all \ - -n keystone -t identity \ - -I "http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v${KEYSTONE_API_VERSION}" \ - -A "http://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v${KEYSTONE_API_VERSION}" \ - -P "http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v${KEYSTONE_API_VERSION}" - -# Wait on all jobs to exit before proceeding (see man wait) -wait +../../../common/keystone/start.sh
\ No newline at end of file |
