#!/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 < /openrc </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