Newer
Older
max_attempts=120
function wait_db(){
db_host=$1
db_port=$2
attempt=0
echo "Wait until $max_attempts seconds for MySQL mano Server ${db_host}:${db_port} "
while ! mysqladmin ping -h"$db_host" -P"$db_port" --silent; do
#wait 120 sec
if [ $attempt -ge $max_attempts ]; then
echo
echo "Can not connect to database ${db_host}:${db_port} during $max_attempts sec"
return 1
fi
attempt=$[$attempt+1]
echo -n "."
sleep 1
done
return 0
}
function is_db_created() {
db_host=$1
db_port=$2
db_user=$3
db_pswd=$4
db_name=$5
if mysqlshow -h"$db_host" -P"$db_port" -u"$db_user" -p"$db_pswd" | grep -v Wildcard | grep -q $db_name; then
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
echo "DB $db_name exists"
return 0
else
echo "DB $db_name does not exist"
return 1
fi
}
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"
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'"
fi
# Setting Keystone database connection
sed -i "721s%.*%connection = mysql+pymysql://keystone:$KEYSTONE_DB_PASSWORD@$DB_HOST:$DB_PORT/keystone%" /etc/keystone/keystone.conf
# Setting Keystone tokens
sed -i "2934s%.*%provider = fernet%" /etc/keystone/keystone.conf
# Populate Keystone database
if [ -z $DB_EXISTS ]; then
su -s /bin/sh -c "keystone-manage db_sync" keystone
fi
# Initialize Fernet key repositories
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:5000/v3/ \
--bootstrap-internal-url http://keystone:5000/v3/ \
--bootstrap-public-url http://keystone:5000/v3/ \
--bootstrap-region-id RegionOne
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
export OS_USERNAME=admin
export OS_PASSWORD=$ADMIN_PASSWORD
export OS_AUTH_URL=http://keystone: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 default --description "Service Project" service
openstack role add --project service --user nbi admin
fi
while ps -ef | grep -v grep | grep -q apache2
# Only reaches this point if apache2 stops running
# When this happens exits with error code