From ba1901de653c324e8d8b0030e163028d11d90cfd Mon Sep 17 00:00:00 2001 From: Swapnil Kulkarni <me@coolsvap.net> Date: Wed, 8 Jul 2015 20:21:27 +0000 Subject: [PATCH] Add config-internal/config-external for barbican Partially Implements: Blueprint standard-start Change-Id: I34b4d96515b4c68d42319b477504abdfe9581bad --- .../centos/binary/barbican/config-external.sh | 1 + .../centos/binary/barbican/config-internal.sh | 1 + docker/common/barbican/config-external.sh | 10 +++ docker/common/barbican/config-internal.sh | 75 ++++++++++++++++ docker/common/barbican/start.sh | 87 +++---------------- tools/genenv | 12 +++ 6 files changed, 113 insertions(+), 73 deletions(-) create mode 120000 docker/centos/binary/barbican/config-external.sh create mode 120000 docker/centos/binary/barbican/config-internal.sh create mode 100644 docker/common/barbican/config-external.sh create mode 100644 docker/common/barbican/config-internal.sh diff --git a/docker/centos/binary/barbican/config-external.sh b/docker/centos/binary/barbican/config-external.sh new file mode 120000 index 000000000..5a0d7a06c --- /dev/null +++ b/docker/centos/binary/barbican/config-external.sh @@ -0,0 +1 @@ +../../../common/barbican/config-external.sh \ No newline at end of file diff --git a/docker/centos/binary/barbican/config-internal.sh b/docker/centos/binary/barbican/config-internal.sh new file mode 120000 index 000000000..393328cd9 --- /dev/null +++ b/docker/centos/binary/barbican/config-internal.sh @@ -0,0 +1 @@ +../../../common/barbican/config-internal.sh \ No newline at end of file diff --git a/docker/common/barbican/config-external.sh b/docker/common/barbican/config-external.sh new file mode 100644 index 000000000..12ca52fb9 --- /dev/null +++ b/docker/common/barbican/config-external.sh @@ -0,0 +1,10 @@ +#!/bin/bash +SOURCE="/opt/kolla/barbican/barbican.conf" +TARGET="/etc/barbican/barbican.conf" +OWNER="barbican" + +if [[ -f "$SOURCE" ]]; then + cp $SOURCE $TARGET + chown ${OWNER}: $TARGET + chmod 0644 $TARGET +fi diff --git a/docker/common/barbican/config-internal.sh b/docker/common/barbican/config-internal.sh new file mode 100644 index 000000000..1ca4bd1be --- /dev/null +++ b/docker/common/barbican/config-internal.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +set -e + +if ! [ "$BARBICAN_DB_PASSWORD" ]; then + BARBICAN_DB_PASSWORD=$(openssl rand -hex 15) + export BARBICAN_DB_PASSWORD +fi + +check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \ + KEYSTONE_ADMIN_SERVICE_PORT BARBICAN_ADMIN_PASSWORD +fail_unless_db +fail_unless_os_service_running keystone + +mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" mysql <<EOF +CREATE DATABASE IF NOT EXISTS ${BARBICAN_DB_NAME}; +GRANT ALL PRIVILEGES ON barbican.* TO + '${BARBICAN_DB_USER}'@'%' IDENTIFIED BY '${BARBICAN_DB_PASSWORD}' +EOF + +# config file setup +crudini --set /etc/barbican/barbican-api.conf \ + DEFAULT \ + sql_connection \ + "mysql://${BARBICAN_DB_USER}:${BARBICAN_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${BARBICAN_DB_NAME}" +crudini --set /etc/barbican/barbican-api.conf \ + DEFAULT \ + log_dir \ + "/var/log/barbican/" +crudini --set /etc/barbican/barbican-api.conf \ + DEFAULT \ + log_file \ + "/var/log/barbican/barbican.log" +crudini --set /etc/barbican/barbican-api-paste.ini \ + pipeline:barbican_api \ + pipeline \ + "keystone_authtoken context apiapp" +crudini --set /etc/barbican/barbican-api-paste.ini \ + filter:keystone_authtoken \ + auth_host \ + ${KEYSTONE_ADMIN_SERVICE_HOST} +crudini --set /etc/barbican/barbican-api-paste.ini \ + filter:keystone_authtoken \ + auth_port \ + ${KEYSTONE_ADMIN_SERVICE_PORT} +crudini --set /etc/barbican/barbican-api-paste.ini \ + filter:keystone_authtoken \ + auth_protocol \ + ${KEYSTONE_AUTH_PROTOCOL} +crudini --set /etc/barbican/barbican-api-paste.ini \ + filter:keystone_authtoken \ + admin_tenant_name \ + ${ADMIN_TENANT_NAME} +crudini --set /etc/barbican/barbican-api-paste.ini \ + filter:keystone_authtoken \ + admin_user \ + ${BARBICAN_KEYSTONE_USER} +crudini --set /etc/barbican/barbican-api-paste.ini \ + filter:keystone_authtoken \ + admin_password \ + ${BARBICAN_KEYSTONE_USER} + +# create the required keystone entities for barbican +export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}" +export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0" + +keystone user-get ${BARBICAN_KEYSTONE_USER} > /dev/null 2>&1 || /bin/keystone user-create --name ${BARBICAN_KEYSTONE_USER} --pass ${BARBICAN_ADMIN_PASSWORD} + +keystone role-get observer > /dev/null 2>&1 || /bin/keystone role-create --name observer +keystone role-get creator > /dev/null 2>&1 || /bin/keystone role-create --name creator + +keystone user-get ${BARBICAN_KEYSTONE_USER} > /dev/null 2>&1 || /bin/keystone user-role-add --user ${BARBICAN_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME} + +# launch Barbican using uwsgi +exec uwsgi --master --emperor /etc/barbican/vassals diff --git a/docker/common/barbican/start.sh b/docker/common/barbican/start.sh index 673aa4339..c0a32e00d 100755 --- a/docker/common/barbican/start.sh +++ b/docker/common/barbican/start.sh @@ -1,81 +1,22 @@ #!/bin/bash -set -e +set -o errexit -: ${BARBICAN_DB_USER:=barbican} -: ${BARBICAN_DB_NAME:=barbican} -: ${KEYSTONE_AUTH_PROTOCOL:=http} -: ${BARBICAN_KEYSTONE_USER:=barbican} -: ${ADMIN_TENANT_NAME:=admin} +CMD="uwsgi" +ARGS="--master --emperor" -if ! [ "$BARBICAN_DB_PASSWORD" ]; then - BARBICAN_DB_PASSWORD=$(openssl rand -hex 15) - export BARBICAN_DB_PASSWORD -fi - -check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \ - KEYSTONE_ADMIN_SERVICE_PORT BARBICAN_ADMIN_PASSWORD -fail_unless_db -fail_unless_os_service_running keystone - -mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" mysql <<EOF -CREATE DATABASE IF NOT EXISTS ${BARBICAN_DB_NAME}; -GRANT ALL PRIVILEGES ON barbican.* TO - '${BARBICAN_DB_USER}'@'%' IDENTIFIED BY '${BARBICAN_DB_PASSWORD}' -EOF +# Loading common functions. +source /opt/kolla/kolla-common.sh -# config file setup -crudini --set /etc/barbican/barbican-api.conf \ - DEFAULT \ - sql_connection \ - "mysql://${BARBICAN_DB_USER}:${BARBICAN_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${BARBICAN_DB_NAME}" -crudini --set /etc/barbican/barbican-api.conf \ - DEFAULT \ - log_dir \ - "/var/log/barbican/" -crudini --set /etc/barbican/barbican-api.conf \ - DEFAULT \ - log_file \ - "/var/log/barbican/barbican.log" -crudini --set /etc/barbican/barbican-api-paste.ini \ - pipeline:barbican_api \ - pipeline \ - "keystone_authtoken context apiapp" -crudini --set /etc/barbican/barbican-api-paste.ini \ - filter:keystone_authtoken \ - auth_host \ - ${KEYSTONE_ADMIN_SERVICE_HOST} -crudini --set /etc/barbican/barbican-api-paste.ini \ - filter:keystone_authtoken \ - auth_port \ - ${KEYSTONE_ADMIN_SERVICE_PORT} -crudini --set /etc/barbican/barbican-api-paste.ini \ - filter:keystone_authtoken \ - auth_protocol \ - ${KEYSTONE_AUTH_PROTOCOL} -crudini --set /etc/barbican/barbican-api-paste.ini \ - filter:keystone_authtoken \ - admin_tenant_name \ - ${ADMIN_TENANT_NAME} -crudini --set /etc/barbican/barbican-api-paste.ini \ - filter:keystone_authtoken \ - admin_user \ - ${BARBICAN_KEYSTONE_USER} -crudini --set /etc/barbican/barbican-api-paste.ini \ - filter:keystone_authtoken \ - admin_password \ - ${BARBICAN_KEYSTONE_USER} +# Config-internal script exec out of this function, it does not return here. +set_configs -# create the required keystone entities for barbican -export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}" -export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0" - -keystone user-get ${BARBICAN_KEYSTONE_USER} > /dev/null 2>&1 || /bin/keystone user-create --name ${BARBICAN_KEYSTONE_USER} --pass ${BARBICAN_ADMIN_PASSWORD} - -keystone role-get observer > /dev/null 2>&1 || /bin/keystone role-create --name observer -keystone role-get creator > /dev/null 2>&1 || /bin/keystone role-create --name creator +# Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases +# of the KOLLA_BOOTSTRAP variable being set, including empty. +if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then + su -s /bin/sh -c "barbican-manage db_sync" barbican + exit 0 +fi -keystone user-get ${BARBICAN_KEYSTONE_USER} > /dev/null 2>&1 || /bin/keystone user-role-add --user ${BARBICAN_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME} +exec $CMD $ARGS -# launch Barbican using uwsgi -exec uwsgi --master --emperor /etc/barbican/vassals diff --git a/tools/genenv b/tools/genenv index 3a547c1db..95082ee54 100755 --- a/tools/genenv +++ b/tools/genenv @@ -235,6 +235,13 @@ CINDER_ENABLED_BACKEND=lvm57 # Here we define pairs hostname:priority. Priorities have to be unique KEEPALIVED_HOST_PRIORITIES=host1:100,host2:99 +#Barbican +BARBICAN_DB_USER=barbican +BARBICAN_DB_NAME=barbican +KEYSTONE_AUTH_PROTOCOL=http +BARBICAN_KEYSTONE_USER=barbican +ADMIN_TENANT_NAME=admin + # this should use the keystone admin port # https://bugs.launchpad.net/kolla/+bug/1469209 cat > ./openrc <<EOF @@ -400,6 +407,11 @@ INIT_HEAT_DB=$INIT_HEAT_DB INIT_KEYSTONE_DB=$INIT_KEYSTONE_DB INIT_NOVA_DB=$INIT_NOVA_DB KEEPALIVED_HOST_PRIORITIES=$KEEPALIVED_HOST_PRIORITIES +BARBICAN_DB_USER=$BARBICAN_DB_USER +BARBICAN_DB_NAME=$BARBICAN_DB_NAME +KEYSTONE_AUTH_PROTOCOL=$KEYSTONE_AUTH_PROTOCOL +BARBICAN_KEYSTONE_USER=$BARBICAN_KEYSTONE_USER +ADMIN_TENANT_NAME=$ADMIN_TENANT_NAME EOF echo Please customize your FLAT_INTERFACE to a different network then your -- GitLab