- Su
Você pode alterar o usuário em seu script a qualquer momento:
su - postres
- Ssh-copy-id
Adicione chaves ssh para raiz ao servidor remoto:
ssh-copy-id [email protected]
Estou tentando configurar a solução de HA para o PostgreSQL. Para isso, estou executando o serviço pgpool.
Nesse serviço, ele chama um script sempre que meu nó primário falha chamando assim:
/etc/pgpool-II-94/failover.sh %d %H'
where %d is my node id and %H is the hostname for the new server. Think of them simply as two parameters.
Meu script de failover está abaixo:
#!/bin/sh
failed_node=$1
new_master=$2
(
date
echo "Failed node: $failed_node"
set -x
/usr/bin/ssh -T -l postgres $new_master "/usr/pgsql-9.4/bin/repmgr -f /var/lib/pgsql/repmgr/repmgr.conf standby promote 2>/dev/null 1>/dev/null <&-"
exit 0;
) 2>&1 | tee -a /tmp/pgpool_failover.log
O problema que estou enfrentando aqui é que, quando este script é executado, ele é executado como root e, portanto, não posso autenticá-lo para o usuário postgres de outro servidor.
Como executar o meu serviço pgpool como o próprio usuário postgres para que minha autenticação seja aprovada?
Agora estou usando:
systemctl start pgpool-II-94
de postgres para postgres em todos os servidores eu tenho setup ssh sem senha, para que não seria um problema.
Por exemplo: quando eu executo o usuário postgres
-bash-4.2$ /usr/bin/ssh -T -l postgres lbdevsecondary 'echo $HOSTNAME'
lbdevsecondary
Mas quando eu corro pelo usuário root, ele pede senha
/usr/bin/ssh -T -l postgres lbdevsecondary 'echo $HOSTNAME'
postgres@lbdevsecondary's password:
lbdevsecondary
Ou, por favor, me diga uma maneira de reescrever a declaração acima da maneira que eu fiz login como usuário postgres e, em seguida, executei os comandos dos meus scripts.
Estou usando o CentOS 7 e bastante novo no Linux.
Você pode alterar o usuário em seu script a qualquer momento:
su - postres
Adicione chaves ssh para raiz ao servidor remoto:
ssh-copy-id [email protected]
Tags postgresql shell-script rhel