45 lines
1.5 KiB

#!/bin/bash
## Init is run on host
## For now it is run every time the script is launched, but
## it should be launched only once after build.
## Accessible variables are:
## - SERVICE_NAME Name of current service
## - DOCKER_BASE_IMAGE Base image from which this service might be built if any
## - SERVICE_DATASTORE Location on host of the DATASTORE of this service
## - SERVICE_CONFIGSTORE Location on host of the CONFIGSTORE of this service
# Please note that postgres detect on its own if its datadir needs to be populated
. lib/common
set -e
if ! [ -f "$HOST_DB_PASSFILE" ]; then
POSTGRES_ROOT_PASSWORD="$(gen_password)"
ddb < <(echo "ALTER USER postgres WITH ENCRYPTED password '$POSTGRES_ROOT_PASSWORD'")
cat <<EOF > "$HOST_DB_PASSFILE"
*:*:*:postgres:$POSTGRES_ROOT_PASSWORD
EOF
chmod 600 "$HOST_DB_PASSFILE"
info "New root password for postgres. "
fi
if ! egrep "^host all all (0.0.0.0/0|all) md5\$" "$PG_HBA" >/dev/null 2>&1; then
if egrep "^host all all (0.0.0.0/0|all) trust\$" "$PG_HBA" >/dev/null 2>&1; then
sed -ri 's%^host all all (0\.0\.0\.0/0|all) trust$%host all all \1 md5%g' \
"$PG_HBA"
if is_db_locked; then
ensure_db_docker_running
docker restart "$container_id"
info "Restarted container $container_id"
fi
info "Accepting connection from outside."
else
die "Can't ensure connection from outside. Please update the charm init script."
fi
fi