X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=docker%2FKeystone%2Fscripts%2Fstart.sh;h=dafb23b360504cd29568b66c3779415e531a898d;hb=3c76174bd19e68861cd049898a89e651de95c66f;hp=1530387355550cc7457d3406d5ad15ca724a3d52;hpb=09a1e974bb70fb9b02a9a0fb41f421fdf7457cbd;p=osm%2Fdevops.git diff --git a/docker/Keystone/scripts/start.sh b/docker/Keystone/scripts/start.sh index 15303873..dafb23b3 100755 --- a/docker/Keystone/scripts/start.sh +++ b/docker/Keystone/scripts/start.sh @@ -1,5 +1,26 @@ #!/bin/bash +# Copyright 2018 Whitestack, LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# For those usages not covered by the Apache License, Version 2.0 please +# contact: esousa@whitestack.com or glavado@whitestack.com +## + +DB_EXISTS="" +DB_NOT_EMPTY="" + max_attempts=120 function wait_db(){ db_host=$1 @@ -27,8 +48,7 @@ function is_db_created() { db_pswd=$4 db_name=$5 - RESULT=`mysqlshow -h"$db_host" -P"$db_port" -u"$db_user" -p"$db_pswd" | grep -v Wildcard | grep -o $db_name` - if [ "$RESULT" == "$db_name" ]; then + if mysqlshow -h"$db_host" -P"$db_port" -u"$db_user" -p"$db_pswd" | grep -v Wildcard | grep -q $db_name; then echo "DB $db_name exists" return 0 else @@ -37,8 +57,6 @@ function is_db_created() { fi } -KEYSTONE_IP=`ifconfig eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'` - wait_db "$DB_HOST" "$DB_PORT" || exit 1 is_db_created "$DB_HOST" "$DB_PORT" "$ROOT_DB_USER" "$ROOT_DB_PASSWORD" "keystone" && DB_EXISTS="Y" @@ -47,6 +65,11 @@ if [ -z $DB_EXISTS ]; then mysql -h"$DB_HOST" -P"$DB_PORT" -u"$ROOT_DB_USER" -p"$ROOT_DB_PASSWORD" --default_character_set utf8 -e "CREATE DATABASE keystone" mysql -h"$DB_HOST" -P"$DB_PORT" -u"$ROOT_DB_USER" -p"$ROOT_DB_PASSWORD" --default_character_set utf8 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '$KEYSTONE_DB_PASSWORD'" mysql -h"$DB_HOST" -P"$DB_PORT" -u"$ROOT_DB_USER" -p"$ROOT_DB_PASSWORD" --default_character_set utf8 -e "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '$KEYSTONE_DB_PASSWORD'" +else + if [ $(mysql -h"$DB_HOST" -P"$DB_PORT" -u"$ROOT_DB_USER" -p"$ROOT_DB_PASSWORD" --default_character_set utf8 -sse "SELECT COUNT(*) FROM keystone;") -gt 0 ]; then + echo "DB keystone is empty" + DB_NOT_EMPTY="y" + fi fi # Setting Keystone database connection @@ -56,7 +79,7 @@ sed -i "721s%.*%connection = mysql+pymysql://keystone:$KEYSTONE_DB_PASSWORD@$DB_ sed -i "2934s%.*%provider = fernet%" /etc/keystone/keystone.conf # Populate Keystone database -if [ -z $DB_EXISTS ]; then +if [ -z $DB_EXISTS ] || [ -z $DB_NOT_EMPTY ]; then su -s /bin/sh -c "keystone-manage db_sync" keystone fi @@ -65,27 +88,46 @@ keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone keystone-manage credential_setup --keystone-user keystone --keystone-group keystone # Bootstrap Keystone service -if [ -z $DB_EXISTS ]; then - keystone-manage bootstrap --bootstrap-password "$ADMIN_PASSWORD" \ - --bootstrap-admin-url http://"$KEYSTONE_IP":5000/v3/ \ - --bootstrap-internal-url http://"$KEYSTONE_IP":5000/v3/ \ - --bootstrap-public-url http://"$KEYSTONE_IP":5000/v3/ \ - --bootstrap-region-id RegionOne +if [ -z $DB_EXISTS ] || [ -z $DB_NOT_EMPTY ]; then + keystone-manage bootstrap \ + --bootstrap-username "$ADMIN_USERNAME" \ + --bootstrap-password "$ADMIN_PASSWORD" \ + --bootstrap-project "$ADMIN_PROJECT" \ + --bootstrap-admin-url "http://$KEYSTONE_HOST:5000/v3/" \ + --bootstrap-internal-url "http://$KEYSTONE_HOST:5000/v3/" \ + --bootstrap-public-url "http://$KEYSTONE_HOST:5000/v3/" \ + --bootstrap-region-id "$REGION_ID" fi # Restart Apache Service service apache2 restart +cat << EOF >> setup_env +export OS_PROJECT_DOMAIN_NAME=default +export OS_USER_DOMAIN_NAME=default +export OS_PROJECT_NAME=$ADMIN_PROJECT +export OS_USERNAME=$ADMIN_USERNAME +export OS_PASSWORD=$ADMIN_PASSWORD +export OS_AUTH_URL=http://$KEYSTONE_HOST:5000/v3 +export OS_IDENTITY_API_VERSION=3 +export OS_IMAGE_API_VERSION=2 +EOF + +source setup_env + # Create NBI User -if [ -z $DB_EXISTS ]; then - openstack user create --domain default --password "$NBI_PASSWORD" nbi - openstack project create --domain defaul --description "Service Project" service - openstack role add --project service --user nbi admin +if [ -z $DB_EXISTS ] || [ -z $DB_NOT_EMPTY ]; then + openstack user create --domain default --password "$SERVICE_PASSWORD" "$SERVICE_USERNAME" + openstack project create --domain default --description "Service Project" "$SERVICE_PROJECT" + openstack role add --project "$SERVICE_PROJECT" --user "$SERVICE_USER" admin + openstack role delete _member_ fi -while [ $(ps -ef | grep -v grep | grep apache2 | wc -l) -ne 0 ] +while ps -ef | grep -v grep | grep -q apache2 do sleep 60 done +# Only reaches this point if apache2 stops running +# When this happens exits with error code exit 1