22 lines
567 B
Bash
22 lines
567 B
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
ADM_USERNAME="${ADM_USERNAME:-adm}"
|
|
ADM_PASSWORD_FILE="${ADM_PASSWORD_FILE:-/run/secrets/pg_adm_password}"
|
|
|
|
POSTGRES_USER="${POSTGRES_USER:?POSTGRES_USER required}"
|
|
POSTGRES_DB="${POSTGRES_DB:-postgres}"
|
|
|
|
ADM_PASSWORD="$(cat "$ADM_PASSWORD_FILE")"
|
|
|
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" \
|
|
-v u="$ADM_USERNAME" -v p="$ADM_PASSWORD" <<'SQL'
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = :'u') THEN
|
|
EXECUTE format('CREATE ROLE %I LOGIN PASSWORD %L', :'u', :'p');
|
|
END IF;
|
|
END
|
|
$$;
|
|
SQL
|