Configurando um servidor push

Configurar um servidor push consiste em duas tarefas básicas: configurar o acesso rsync (para um espelhamento normal pull) e configurar um mecanismo de ativação ssh (para fazer pushing do espelhamento pull).

(Para mais informações sobre o que é um servidor push, por favor leia a explicação sobre o espelhamento push).

Configurando rsync

Instale o rsync. Se o seu site está rodando o Debian, somente instale o pacote rsync.

Crie o arquivo rsyncd.conf e insira alguma coisa similar a isto:

uid = nobody
gid = nogroup
max connections = 50
socket options = SO_KEEPALIVE

[debian]
  path = /srv/debian/mirror
  comment = O repositório Debian (https://www.debian.org/mirror/size)
  auth users = *
  read only = true
  secrets file = /etc/rsyncd/debian.secrets

Adicione uma entrada para cada site que você vai fazer pushing no arquivo /etc/rsyncd/debian.secrets:

site1.example.com:uma_senha
site2.example.com:outra_senha
site3.example.net:senha

Você agora deu aos espelhos de destino o acesso ao repositório de sua máquina. Se você desejar fornecer acesso rsync para todos, pule as configurações auth users e secrets file em rsyncd.conf. Você não precisa de um arquivo secrets.

Você provavelmente vai querer iniciar o daemon rsync pelo inetd. Para habilitar o daemon, adicione o seguinte no arquivo /etc/inetd.conf:

rsync      stream      tcp         nowait      root /usr/bin/rsync rsyncd --daemon

(Lembre-se de enviar para o inetd um sinal HUP para informá-lo da releitura de seu arquivo de configuração após modificar o arquivo).

Configurando o mecanismo de ativação ssh

Crie uma nova chave ssh para a conta que você usa para espelhar o Debian usando ssh-keygen. Se sua conta já possui uma chave para outros propósitos, você pode querer criar uma nova e armazená-la em um arquivo diferente usando ssh-keygen -f ~/.ssh/identity.mysite

Então seus espelhos de destino precisarão adicionar

command="~/bin/ftpsync",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty <conteúdo do seu arquivo ~/.ssh/<key>.pub>

nos seus arquivos ~/.ssh/authorized_keys.

Você precisa configurar seu processo de espelhamento para contatar seus espelhos de destino quando sua execução de espelhamento tiver terminado. A suíte ftpsync contém o script runmirrors que cuidará de todas as tarefas para você. Simplesmente mude seu ftpsync.conf para incluir a configuração HUB=true, copie runmirrors.conf.sample para runmirrors.conf e runmirrors.mirror.sample para runmirrors.mirror e configure o arquivo de configuração para se adequar ao seu sistema. Então liste todos os seus espelhos de destino dentro de runmirrors.mirror e a dupla ftpsync/runmirror fará todo o trabalho pesado para você.

O efeito será que seu sistema tentará fazer um ssh para seus espelhos de destino, depois da atualização do seu próprio espelho, de modo que eles possam fazer suas próprias atualizações. Assume-se que você tenha dado a chave ssh para seus(as) operadores(as) de espelhos de destino, chave que você disse ao runmirror para ser usada, e que eles adicionaram aos seus próprios arquivos ~/.ssh/authorized_keys como descrito acima.

Se tiver qualquer problema, entre em contato conosco.