No momento em que escrevo, há algo estranho sobre a execução do Ansible no Cygwin no Windows. Não sei o que é, mas não é nada que eu possa consertar. Eu mudei para uma VM Linux e as coisas começaram a funcionar corretamente.
Estou tentando fazer um ping Ansible ansible all -m ping --ask-pass
, mas recebo falhas SSH. Como o log de depuração é bastante extenso, reduzi a citação abaixo para onde eu acho que o problema ocorre. Mais cedo no log, eu sou capaz de se conectar ao host remoto (um RHEL5 VM sem cabeça), mas quando realmente executar o "ping", ele falha com o (s) erro (s) abaixo (s).
debug1: Entering interactive session.
debug2: set_control_persist_exit_time: schedule exit in 60 seconds
debug1: multiplexing control connection
debug2: fd 4 setting O_NONBLOCK
debug3: fd 5 is O_NONBLOCK
debug3: fd 5 is O_NONBLOCK
debug1: channel 1: new [mux-control]
debug3: channel_post_mux_listener: new mux channel 1 fd 5
debug3: mux_master_read_cb: channel 1: hello sent
debug2: set_control_persist_exit_time: cancel scheduled exit
debug3: mux_master_read_cb: channel 1 packet type 0x00000001 len 4
debug2: process_mux_master_hello: channel 1 slave version 4
debug2: mux_client_hello_exchange: master version 4
debug3: mux_client_forwards: request forwardings: 0 local, 0 remote
debug3: mux_client_request_session: entering
debug3: mux_client_request_alive: entering
debug3: mux_master_read_cb: channel 1 packet type 0x10000004 len 4
debug2: process_mux_alive_check: channel 1: alive check
debug3: mux_client_request_alive: done pid = 9664
debug3: mux_master_read_cb: channel 1 packet type 0x10000002 len 264
debug2: process_mux_new_session: channel 1: request tty 1, X 0, agent 0, subsys 0, term "xterm", cmd "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1392125626.39-45498424175459 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1392125626.39-45498424175459 && echo $HOME/.ansible/tmp/ansible-tmp-1392125626.39-45498424175459'", env 0
debug3: mux_client_request_session: session request sent
mm_receive_fd: no message header
process_mux_new_session: failed to receive fd 0 from slave
debug1: channel 1: mux_rcb failed
debug2: channel 1: zombie
debug2: channel 1: gc: notify user
debug3: mux_master_control_cleanup_cb: entering for channel 1
debug2: channel 1: gc: user detached
debug2: channel 1: zombie
debug2: channel 1: garbage collecting
debug1: channel 1: free: mux-control, nchannels 2
debug3: channel 1: status: The following connections are open:
Eu conectei por SSH convencional à máquina host e verifiquei se o xterm é executado na caixa remota e enquanto está instalado. Ele é executado, mas sai com o seguinte erro:
xterm Xt error: Can't open display:
xterm: DISPLAY is not set
Meu palpite é que o ssh se conecta, tenta executar os comandos e não consegue porque o xterm explode. Eu fui procurar uma maneira de alterar qual terminal usar, mas não consegui encontrar nada na documentação. Qualquer entrada ou sugestões são muito apreciadas.
Eu consegui trabalhar em cygin com cerca de 2 horas de erros esquisitos no googling com a seguinte configuração:
cat /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False
provavelmente ruim para segurança ... também:
cat /etc/ansible/hosts
[dbservers]
56.77.50.151 ansible_ssh_port=22 ansible_ssh_user=ssh_user
verifique:
ansible -vvvv all -a "/bin/echo hello"
Eu tive que ter certeza de que a autenticação de chave pública privada está configurada corretamente
cat id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
ls -al ~/.ssh/authorized_keys
rm -fv ~/id_rsa.pub
Eu suspeitaria do ponto de virada para a configuração para grupos e usuários no cygwin : e chown -v local_pc_user: local_pc_user ~ / .ssh / id_rsa.pub
e finalmente a saída é:
<56.77.50.151> ESTABLISH CONNECTION FOR USER: ssh_user
<56.77.50.151> REMOTE_MODULE command /bin/echo hello
<56.77.50.151> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s', '-o',
'ControlPath=/home/local_pc_user/.ansible/cp/ansible-ssh-%h-%p-%r',
'-o', 'StrictHostKeyChecking=no', '-o',
'Port=22', '-o', 'KbdInteractiveAuthentication=no',
'-o', 'PreferredAuthentications=gssapi-with-mic,
gssapi-keyex,hostbased,publickey', '-o', 'PasswordAuthentication=no', '-o', 'User=ssh_user', '-o', 'ConnectTimeout=10',
'56.77.50.151', "/bin/sh -c 'mkdir -p
$HOME/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280 &&
chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280 &&
echo $HOME/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280'"]
<56.77.50.151> PUT /tmp/tmprELaVU TO /export/home/ssh_user/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280/command
<56.77.50.151> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto',
'-o', 'ControlPersist=60s', '-o', 'ControlPath=/home/local_pc_user/.ansible/cp/ansible-ssh-%h-%p-%r', '-o', 'StrictHostKeyChecking=no', '-o', 'Port=22',
'-o', 'KbdInteractiveAuthentication=no', '-o',
'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o', 'PasswordAuthentication=no', '-o', 'User=ssh_user', '-o', 'ConnectTimeout=10'
, '56.77.50.151', "/bin/sh -c '/usr/bin/python
/export/home/ssh_user/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280/command;
rm -rf /export/home/ssh_user/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280/
>/dev/null 2>&1'"]
56.77.50.151 | success | rc=0 >>
hello
Esse comportamento começou após algumas atualizações do Ansible. Em versões mais antigas do Ansible, não tive problemas com isso. Na verdade parece ser xterm que é o problema. Por que o Ansible precisa executar o xterm? Eu classificaria isso como um bug no Ansible.
De qualquer forma, trabalhei em torno do problema no Cygwin adicionando o seguinte a ~/.ssh/config
:
ForwardX11 yes