From 8bbd0a958cde405e38213c2510436619102c8f76 Mon Sep 17 00:00:00 2001 From: "Munoz, Obed N" Date: Thu, 25 Aug 2016 09:15:41 -0500 Subject: [PATCH] Add persistent data capability Signed-off-by: Munoz, Obed N --- keystone/Dockerfile | 4 +--- keystone/README.md | 2 ++ keystone/bootstrap.sh | 6 ++++-- keystone/pre-setup.sh | 39 +++++++++++++++------------------------ 4 files changed, 22 insertions(+), 29 deletions(-) diff --git a/keystone/Dockerfile b/keystone/Dockerfile index bc52b8f..a6d0d27 100644 --- a/keystone/Dockerfile +++ b/keystone/Dockerfile @@ -13,14 +13,12 @@ COPY keystone.conf /etc/keystone RUN mkdir -p /etc/nginx/ssl COPY keystone.wsgi.conf /etc/nginx/ -VOLUME /var/lib/mysql - COPY bootstrap.sh /usr/bin COPY pre-setup.sh /usr/bin COPY openrc /root/ RUN /usr/bin/pre-setup.sh - +VOLUME /var/lib/mysql WORKDIR /root CMD '/usr/bin/bootstrap.sh' diff --git a/keystone/README.md b/keystone/README.md index 43c8a91..3be872b 100644 --- a/keystone/README.md +++ b/keystone/README.md @@ -29,9 +29,11 @@ Start Keystone container ------------------------ ``` YOUR_HOST=`hostname -f` + MYSQL_DATA_DIR=/var/lib/mysql/ docker run -d -it --name keystone -p 5000:5000 -p 35357:35357 \ -e IDENTITY_HOST="$YOUR_HOST" \ -e KEYSTONE_ADMIN_PASSWORD="secret" \ + -v $MYSQL_DATA_DIR:/var/lib/mysql \ -v `pwd`/keystone_cert.pem:/etc/nginx/ssl/keystone_cert.pem \ -v `pwd`/keystone_key.pem:/etc/nginx/ssl/keystone_key.pem \ clearlinux/keystone diff --git a/keystone/bootstrap.sh b/keystone/bootstrap.sh index 0d009ba..0d70784 100755 --- a/keystone/bootstrap.sh +++ b/keystone/bootstrap.sh @@ -6,11 +6,14 @@ KEYSTONE_ADMIN_PASSWORD="${KEYSTONE_ADMIN_PASSWORD:-bb915e9ce0ae4b46e82a069b2ef0 sed -i.bak s/IDENTITY_HOST/$IDENTITY_HOST/g /root/openrc sed -i.bak s/KEYSTONE_ADMIN_PASSWORD/$KEYSTONE_ADMIN_PASSWORD/g /root/openrc +if [[ ! -d /var/lib/mysql/mysql ]]; then + cp -r /data/* /var/lib/mysql/ +fi + # MariaDB mysqld_safe & mysqladmin --silent --wait=30 ping || exit 1 - # Populate keystone database keystone-manage db_sync @@ -18,7 +21,6 @@ keystone-manage db_sync /usr/bin/uwsgi --ini /usr/share/uwsgi/keystone/admin.ini -s /run/uwsgi/keystone/admin.sock & /usr/bin/uwsgi --ini /usr/share/uwsgi/keystone/public.ini -s /run/uwsgi/keystone/public.sock & /usr/bin/nginx - /usr/bin/memcached -u root & # Bootstrap keystone diff --git a/keystone/pre-setup.sh b/keystone/pre-setup.sh index e1f1b9a..02d1921 100755 --- a/keystone/pre-setup.sh +++ b/keystone/pre-setup.sh @@ -5,7 +5,6 @@ KEYSTONE_DB_USER=keystone KEYSTONE_DB_PASSWORD=914de29bc82616d7c159eaf9b1f39402 KEYSTONE_DB_NAME=keystone -sed -i.bak s/MARIADB_HOST/$MARIADB_HOST/g /etc/keystone/keystone.conf sed -i.bak s/KEYSTONE_DB_USER/$KEYSTONE_DB_USER/g /etc/keystone/keystone.conf sed -i.bak s/KEYSTONE_DB_PASSWORD/$KEYSTONE_DB_PASSWORD/g /etc/keystone/keystone.conf sed -i.bak s/KEYSTONE_DB_NAME/$KEYSTONE_DB_NAME/g /etc/keystone/keystone.conf @@ -13,34 +12,24 @@ sed -i.bak s/IDENTITY_HOST/$IDENTITY_HOST/g /etc/nginx/keystone.wsgi.conf # MariaDB mkdir /data -echo "bind-address = 0.0.0.0" >> /etc/mariadb/my.cnf echo "datadir = /data" >> /etc/mariadb/my.cnf -# Bootstrap mariadb if it hasn't been started -if [[ ! -d /var/lib/mysql/mysql ]]; then - /usr/bin/mysql-systemd-start pre - mysqld_safe & +# Initialize MariaDB data +/usr/bin/mysql-systemd-start pre +mysqld_safe & +mysqladmin --silent --wait=30 ping || exit 1 - until mysql -e "SELECT 1;" - do - continue - done +# Remove anonymous user access +mysql -e "DELETE FROM mysql.user WHERE User=\"\";" - # Set root user password - mysql -e "GRANT ALL PRIVILEGES ON *.* TO \"root\"@\"%\" IDENTIFIED by \"secret\" WITH GRANT OPTION;" +# Remove test database +mysql -e "DROP DATABASE test;" - # Remove anonymous user access - mysql -e "DELETE FROM mysql.user WHERE User=\"\";" - - # Remove test database - mysql -e "DROP DATABASE test;" - - # Keystone Database and user - mysql -e "create database $KEYSTONE_DB_NAME;" - mysql -e "grant all on $KEYSTONE_DB_NAME.* to '$KEYSTONE_DB_USER'@'%' IDENTIFIED by '$KEYSTONE_DB_PASSWORD';" - mysql -e "grant all on $KEYSTONE_DB_NAME.* to '$KEYSTONE_DB_USER'@'localhost' IDENTIFIED BY '$KEYSTONE_DB_PASSWORD';" - mysql -e "FLUSH PRIVILEGES;" -fi +# Keystone Database and user +mysql -e "create database $KEYSTONE_DB_NAME;" +mysql -e "grant all on $KEYSTONE_DB_NAME.* to '$KEYSTONE_DB_USER'@'%' IDENTIFIED by '$KEYSTONE_DB_PASSWORD';" +mysql -e "grant all on $KEYSTONE_DB_NAME.* to '$KEYSTONE_DB_USER'@'localhost' IDENTIFIED BY '$KEYSTONE_DB_PASSWORD';" +mysql -e "FLUSH PRIVILEGES;" # Populate keystone database keystone-manage db_sync @@ -57,3 +46,5 @@ echo "logto=/var/log/uwsgi-keystone-public.log" >> /usr/share/uwsgi/keystone/pub mkdir /var/lib/nginx echo "user root;" >> /usr/share/nginx/conf/nginx.conf +# Reset MariaDB datadir +sed -i.bak "s/datadir =.*//g" /etc/mariadb/my.cnf