Estou usando o Ansible para enviar configurações. Eu tenho uma tarefa dentro de um playbook que eu quero iniciar um túnel ssh em segundo plano para o MongoDB. O comando de tarefa que estou usando é
- name: Start tunnel service
shell: ssh -f -N -L 27018:localhost:27017 mongo@remote-server
Mas não importa o que eu faça, não posso continuar ansioso. Em vez disso, ele trava ou age como se estivesse esperando algo para retornar uma resposta. Se eu executar este comando no shell como normal, ele não tem nenhum problema e eu posso conectar-me à instância do mongo remoto.
No começo eu pensei porque estava configurando um novo servidor que o known_hosts do ssh estava esperando que um usuário respondesse sim / não antes de prosseguir. Neste caso eu tentei duas opções. Primeiro, tentei adicionar a impressão digital do servidor ao arquivo known_hosts. Depois de executar a partir do shell, ele não solicitou uma entrada de known_hosts, mas o ansible também continua pendente. Eu também tentei a opção de
ssh -o StrictHostKeyChecking=no -f -N -L 27018:localhost:27017 mongo@remote-server
Mas esta opção também está produzindo o mesmo problema com suspensão ansiosa.
Eu tentei alternar entre o comando ansible e o módulo shell sem qualquer alteração no problema. Minha experiência mais recente foi tentar nohup antes do comando, mas isso também não está funcionando.
nohup ssh -f -N -L 27018:localhost:27017 mongo@remote-server
Também tentei pensar criativamente que, se um processo diferente fosse capaz de executar o comando que depois enviaria uma resposta de volta para o ansible, tentei envolvê-lo como uma tarefa do Upstart. Eu coloquei o comando shell dentro de um arquivo /etc/tunnel.sh
e também coloquei o script upstart em /etc/init/tunnel.conf
. Mas isso também não funciona e parece ter problemas para iniciar o script. Se eu executar sudo service tunnel start
, ele será iniciado, mas terá problemas para parar. Embora executar isso através de ansible como um comando não faça nada e apenas fica lá e trava como todos os outros experimentos.
- name: Start tunnel service
command service tunnel start