#!/usr/bin/env bash set -Eeo pipefail file_env() { local var="$1" local fileVar="${var}_FILE" local def="${2:-}" if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then printf >&2 'error: both %s and %s are set (but are exclusive)\n' "$var" "$fileVar" exit 1 fi local val="$def" if [ "${!var:-}" ]; then val="${!var}" elif [ "${!fileVar:-}" ]; then val="$(< "${!fileVar}")" fi export "$var"="$val" unset "$fileVar" } docker_setup_env() { file_env 'PGPOOL_ADMIN_USERNAME' file_env 'PGPOOL_ADMIN_PASSWORD' file_env 'POSTGRES_PGPOOL_USERNAME' file_env 'POSTGRES_PGPOOL_PASSWORD' } if [ "$(id -u)" = '0' ]; then # sudo service ssh start chown -R postgres /etc/pgpool2 exec gosu postgres "$BASH_SOURCE" fi install --directory --owner postgres --group postgres --mode 700 /var/lib/postgresql/.ssh cp /ssh/* /var/lib/postgresql/.ssh/ chmod 600 /var/lib/postgresql/.ssh/* docker_setup_env #{ # printf "%s:" "$PGPOOL_ADMIN_USERNAME" # pg_md5 "$PGPOOL_ADMIN_PASSWORD" # printf "\n" #} > /etc/pgpool2/pcp.conf #{ # printf "localhost:9898:%s:%s\n" "$PGPOOL_ADMIN_USERNAME" "$PGPOOL_ADMIN_PASSWORD" # printf "pgpool:9898:%s:%s\n" "$PGPOOL_ADMIN_USERNAME" "$PGPOOL_ADMIN_PASSWORD" #} > ~/.pcppass #chmod 600 /etc/pgpool2/pcp.conf ~/.pcppass # #{ # printf "listen_addresses = '*'\n" # printf "port = 5432\n" ## printf "unix_socket_directories = '/run'\n" ## printf "pcp_socket_dir = '/run'\n" # printf "enable_pool_hba = off\n" # printf "allow_clear_text_frontend_auth = on\n" # printf "process_management_mode = 'dynamic'\n" # printf "backend_clustering_mode = 'raw'\n" # printf "health_check_timeout = 5\n" # printf "health_check_period = 5\n" # printf "health_check_user = 'pgpool'\n" # printf "health_check_password = '%s'\n" "$PGPOOL_PASSWORD" # # IFS=':' # n=0 # for backend in $PGPOOL_BACKEND # do # printf "backend_hostname%d = '%s'\n" $n $backend # printf "backend_port%d = 5432\n" $n # ((n+=1)) # done #} > /etc/pgpool2/pgpool.conf # #/usr/sbin/pgpool while true do echo "$(date)" sleep 3600 done