
On Ubuntu the default postgresql data directory is not /var/lib/pgsql/data so the check to see if that directory exists is not needed. On Fedora we can assume that the rpm will create it and initialize it properly. So this line can safely removed without any issues. Change-Id: If949f0580eb139f3803b698ee88fceebf958448e
70 lines
2.3 KiB
Plaintext
70 lines
2.3 KiB
Plaintext
# lib/postgresql
|
|
# Functions to control the configuration and operation of the PostgreSQL database backend
|
|
|
|
# Dependencies:
|
|
# DATABASE_{HOST,USER,PASSWORD} must be defined
|
|
|
|
# Save trace setting
|
|
XTRACE=$(set +o | grep xtrace)
|
|
set +o xtrace
|
|
|
|
register_database postgresql
|
|
|
|
function recreate_database_postgresql {
|
|
local db=$1
|
|
local charset=$2
|
|
# Avoid unsightly error when calling dropdb when the database doesn't exist
|
|
psql -h$DATABASE_HOST -U$DATABASE_USER -dtemplate1 -c "DROP DATABASE IF EXISTS $db"
|
|
createdb -h $DATABASE_HOST -U$DATABASE_USER -l C -T template0 -E $charset $db
|
|
}
|
|
|
|
function configure_database_postgresql {
|
|
echo_summary "Configuring and starting PostgreSQL"
|
|
if [[ "$os_PACKAGE" = "rpm" ]]; then
|
|
PG_HBA=/var/lib/pgsql/data/pg_hba.conf
|
|
PG_CONF=/var/lib/pgsql/data/postgresql.conf
|
|
else
|
|
PG_DIR=`find /etc/postgresql -name pg_hba.conf|xargs dirname`
|
|
PG_HBA=$PG_DIR/pg_hba.conf
|
|
PG_CONF=$PG_DIR/postgresql.conf
|
|
fi
|
|
# Listen on all addresses
|
|
sudo sed -i "/listen_addresses/s/.*/listen_addresses = '*'/" $PG_CONF
|
|
# Do password auth from all IPv4 clients
|
|
sudo sed -i "/^host/s/all\s\+127.0.0.1\/32\s\+ident/$DATABASE_USER\t0.0.0.0\/0\tpassword/" $PG_HBA
|
|
# Do password auth for all IPv6 clients
|
|
sudo sed -i "/^host/s/all\s\+::1\/128\s\+ident/$DATABASE_USER\t::0\/0\tpassword/" $PG_HBA
|
|
start_service postgresql
|
|
|
|
# If creating the role fails, chances are it already existed. Try to alter it.
|
|
sudo -u root sudo -u postgres -i psql -c "CREATE ROLE $DATABASE_USER WITH SUPERUSER LOGIN PASSWORD '$DATABASE_PASSWORD'" || \
|
|
sudo -u root sudo -u postgres -i psql -c "ALTER ROLE $DATABASE_USER WITH SUPERUSER LOGIN PASSWORD '$DATABASE_PASSWORD'"
|
|
}
|
|
|
|
function install_database_postgresql {
|
|
echo_summary "Installing postgresql"
|
|
PGPASS=$HOME/.pgpass
|
|
if [[ ! -e $PGPASS ]]; then
|
|
cat <<EOF > $PGPASS
|
|
*:*:*:$DATABASE_USER:$DATABASE_PASSWORD
|
|
EOF
|
|
chmod 0600 $PGPASS
|
|
else
|
|
sed -i "s/:root:\w\+/:root:$DATABASE_PASSWORD/" $PGPASS
|
|
fi
|
|
if [[ "$os_PACKAGE" = "rpm" ]]; then
|
|
install_package postgresql-server
|
|
else
|
|
install_package postgresql
|
|
fi
|
|
}
|
|
|
|
function database_connection_url_postgresql {
|
|
local output=$1
|
|
local db=$2
|
|
eval "$output=$BASE_SQL_CONN/$db?client_encoding=utf8"
|
|
}
|
|
|
|
# Restore xtrace
|
|
$XTRACE
|