diff options
Diffstat (limited to 'meta-openstack/recipes-support/postgresql/postgresql/postgresql-init')
-rw-r--r-- | meta-openstack/recipes-support/postgresql/postgresql/postgresql-init | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/meta-openstack/recipes-support/postgresql/postgresql/postgresql-init b/meta-openstack/recipes-support/postgresql/postgresql/postgresql-init new file mode 100644 index 00000000..d9850dab --- /dev/null +++ b/meta-openstack/recipes-support/postgresql/postgresql/postgresql-init @@ -0,0 +1,46 @@ +#!/bin/sh +# set -x + +PN=postgresql +CONTROLLER_IP=%CONTROLLER_IP% +COMPUTE_IP=%COMPUTE_IP% +DB_USER=%DB_USER% +DB_PASSWORD=%DB_PASSWORD% + +if [ -e /etc/${PN}/PG_VERSION ]; then + # the database has already been initialized, return + exit 0 +fi + +sudo -u postgres initdb -D /etc/${PN}/ +sleep 2 +echo "listen_addresses = '*'" >> /etc/${PN}/postgresql.conf +echo "host all all ${CONTROLLER_IP}/32 trust" >> /etc/${PN}/pg_hba.conf +echo "host all all ${COMPUTE_IP}/32 trust" >> /etc/${PN}/pg_hba.conf +sleep 2 +/etc/init.d/postgresql start +sleep 10 + +count=0 +done=0 +while [ $count -le 10 ] && [ $done -eq 0 ]; do + sudo -u postgres psql -c "CREATE ROLE ${DB_USER} WITH SUPERUSER LOGIN PASSWORD '${DB_PASSWORD}'" 2> /dev/null + if [ $? -ne 0 ]; then + echo "[INFO] postgres: failed to create account for ${DB_USER}, trying again" + /etc/init.d/postgresql stop + sleep 3 + /etc/init.d/postgresql start + sleep 3 + else + echo "[INFO] postgres: created account for ${DB_USER}, continuing .. " + done=1 + fi + count=`expr $count + 1` +done + +if [ $done -eq 0 ]; then + echo "[ERROR] postgres: unable to create admin account" + exit 1 +fi + +ln -s /usr/share/zoneinfo /usr/share/postgresql/timezone |