aboutsummaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
Diffstat (limited to 'docker')
-rw-r--r--docker/centos/binary/keystone/Dockerfile4
l---------docker/centos/binary/keystone/config-external.sh1
l---------docker/centos/binary/keystone/config-internal.sh1
-rw-r--r--docker/common/base/kolla-common.sh24
-rw-r--r--docker/common/keystone/config-external.sh7
-rwxr-xr-xdocker/common/keystone/config-internal.sh165
-rwxr-xr-xdocker/common/keystone/start.sh168
7 files changed, 211 insertions, 159 deletions
diff --git a/docker/centos/binary/keystone/Dockerfile b/docker/centos/binary/keystone/Dockerfile
index f8db5f582..e05db2fde 100644
--- a/docker/centos/binary/keystone/Dockerfile
+++ b/docker/centos/binary/keystone/Dockerfile
@@ -17,8 +17,8 @@ RUN chown -R keystone:keystone /var/www/cgi-bin/keystone
RUN chmod 755 /var/www/cgi-bin/keystone/*
# Add start-up and check scripts
-COPY ./start.sh /start.sh
-COPY ./check.sh /check.sh
+COPY start.sh check.sh /
+COPY config-internal.sh config-external.sh /opt/kolla/
# Run the Keystone start script
CMD ["/start.sh"]
diff --git a/docker/centos/binary/keystone/config-external.sh b/docker/centos/binary/keystone/config-external.sh
new file mode 120000
index 000000000..ae5be7eea
--- /dev/null
+++ b/docker/centos/binary/keystone/config-external.sh
@@ -0,0 +1 @@
+../../../common/keystone/config-external.sh \ No newline at end of file
diff --git a/docker/centos/binary/keystone/config-internal.sh b/docker/centos/binary/keystone/config-internal.sh
new file mode 120000
index 000000000..fe8d98c1f
--- /dev/null
+++ b/docker/centos/binary/keystone/config-internal.sh
@@ -0,0 +1 @@
+../../../common/keystone/config-internal.sh \ No newline at end of file
diff --git a/docker/common/base/kolla-common.sh b/docker/common/base/kolla-common.sh
index 8c2ef5ec1..bd6a539a0 100644
--- a/docker/common/base/kolla-common.sh
+++ b/docker/common/base/kolla-common.sh
@@ -168,3 +168,27 @@ dump_vars() {
set +o posix
}
+set_configs() {
+ case $KOLLA_CONFIG_STRATEGY in
+ CONFIG_INTERNAL)
+ # exec is intentional to preserve existing behaviour
+ exec /opt/kolla/config-internal.sh
+ ;;
+ CONFIG_EXTERNAL_COPY_ALWAYS)
+ source /opt/kolla/config-exernal.sh
+ ;;
+ CONFIG_EXTERNAL_COPY_ONCE)
+ if [[ -f /configured ]]; then
+ echo 'INFO - This container has already been configured; Refusing to copy new configs'
+ return
+ fi
+ source /opt/kolla/config-exernal.sh
+ touch /configured
+ ;;
+
+ *)
+ echo '$CONFIG_STRATEGY is not set properly'
+ exit 1
+ ;;
+ esac
+}
diff --git a/docker/common/keystone/config-external.sh b/docker/common/keystone/config-external.sh
new file mode 100644
index 000000000..76e4acfff
--- /dev/null
+++ b/docker/common/keystone/config-external.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+if [[ -f /opt/kolla/keystone/keystone.conf ]]; then
+ cp /opt/kolla/keystone/keystone.conf /etc/keystone/keystone.conf
+ chown keystone: /etc/keystone/keystone.conf
+ chmod 0644 /etc/keystone/keystone.conf
+fi
diff --git a/docker/common/keystone/config-internal.sh b/docker/common/keystone/config-internal.sh
new file mode 100755
index 000000000..527870fdf
--- /dev/null
+++ b/docker/common/keystone/config-internal.sh
@@ -0,0 +1,165 @@
+#!/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_KEYSTONE_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 INIT_KEYSTONE_DB
+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
+
+# Create keystone user and group if they don't exist
+id -u keystone &>/dev/null || useradd --user-group keystone
+
+# 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_KEYSTONE_DB}" == "true" ] ; then
+ su -s /bin/bash -c "keystone-manage db_sync" keystone
+fi
+
+# Start Keystone
+echo "Starting Keystone"
+/usr/sbin/httpd -DFOREGROUND &
+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
diff --git a/docker/common/keystone/start.sh b/docker/common/keystone/start.sh
index 527870fdf..4dce4c757 100755
--- a/docker/common/keystone/start.sh
+++ b/docker/common/keystone/start.sh
@@ -1,165 +1,19 @@
#!/bin/bash
-set -e
+set -o errexit
-# Run Kolla common script
-echo "Running the kolla-common script"
-. /opt/kolla/kolla-common.sh
+CMD="/usr/bin/keystone-all"
+ARGS=""
-# 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_KEYSTONE_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}
+# loading common functions
+source /opt/kolla/kolla-common.sh
-## 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 INIT_KEYSTONE_DB
-dump_vars
+set_configs
-# 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
-
-# Create keystone user and group if they don't exist
-id -u keystone &>/dev/null || useradd --user-group keystone
-
-# 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_KEYSTONE_DB}" == "true" ] ; then
- su -s /bin/bash -c "keystone-manage db_sync" keystone
+# Bootstrap and exit if BOOTSTRAP variable is set
+if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then
+ su -c "keystone-manage db_sync" keystone
+ exit 0
fi
-# Start Keystone
-echo "Starting Keystone"
-/usr/sbin/httpd -DFOREGROUND &
-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
+exec $CMD $ARGS