This script provides functionality to setup passwordless authentication in PostgreSQL for defined Server Names.
This is very helpful by using replication via repmgr and is not Linux Distribution specific, it was used till now with SLES 12, SLES 15 and RHEL 8 Clones.
As all of my scripts it provides help how the usage is with -h parameter:
$ [[root@rocky ~]$ sh pgpass.sh -h $ [[root@rocky ~]$ Usage: $ [[root@rocky ~]$ pgpass.sh [OPTION] $ [[root@rocky ~]$ $ [[root@rocky ~]$ Options: $ [[root@rocky ~]$ -p server where the primary host is running on (required) $ [[root@rocky ~]$ -s server where the secondary host is running on (required) $ [[root@rocky ~]$ -h prints this help
The parameters -p and -s should be server DNS Names without domain, the domain will be specified within the script.
The script itself:
!/bin/sh ######################################## # pgpass setup script # # Author: Karsten Lenz / 2020.07.13 # ######################################## progName=$(basename $0) domain=put your domain here postgresHome=/var/lib/pgsql pgpass=$postgresHome/.pgpass password=put your password here function printHelp() { printf "Usage:\n" printf "${progName} [OPTION]\n\n" printf "Options:\n" printf "\t -p \t\t\tserver where the primary host is running on (required)\n" printf "\t -s \t\t\tserver where the secondary host is running on (required)\n" printf "\t -h \t\t\t\tprints this help\n" } while getopts p:s:h option 2>/dev/null do case "${option}" in p) primServer=${OPTARG};; s) secdServer=${OPTARG};; h) printHelp; exit 2;; *) printf "Unsupported option or parameter value missing '$*'\n"; printf "Run ${progName} -h to print help\n"; exit 1;; esac done ############ Log function ############ logFile=/tmp/pgpass_install.log function log() { echo "$(date +%Y.%m.%d-%H:%M:%S) [$$]$*" | tee -a $logFile } if [ -f $logFile ]; then continue else touch $logFile chmod -R 774 $logFile sleep 2 fi #clean .pgpass rm -f $pgpass #set values in .pgpass log "INFO: #host:port:database:user:password in $pgpass" echo "#host:port:database:user:password" | tee -a $pgpass log "INFO: Setting localhost in $pgass" echo "localhost:5432:*:repmgr:$password" | tee -a $pgpass log "INFO: Setting 127.0.0.1 in $pgpass" echo "127.0.0.1:5432:*:repmgr:$password" | tee -a $pgpass log "INFO: Setting Primary $primServer in $pgpass" echo "$primServer.$domain:5432:*:repmgr:$password" | tee -a $pgpass log "INFO: Setting Primary $secdServer in $pgpass" echo "$secdServer.$domain:5432:*:repmgr:$password" | tee -a $pgpass #set .pgpass 0600 chmod 0600 $pgpass
The script is used in a customer build cloud solution as part of recurrent setup step of replication using repmgr.
Cet article Setup pgpass for replication est apparu en premier sur Blog dbi services.