大部分情况下,我都按照自己想要的方式运行。但我不知道这是怎么发生的;我的 Ansible 剧本都无法连接到远程系统(它只是挂起了)。我可以使用任何帐户从命令行通过 SSH 顺利进入它们。
下面是 Ansible Ping 测试。我的本地主机很好,剧本可以执行。但不能在我的远程系统上执行。
我甚至删除了所有帐户,创建了新密钥,然后重新安装了 Ansible
ansible.cfg 目前处于默认设置(未启用任何内容),并且我已清除 ~/.ansible 中的所有内容
**Remote System**
[root@SELC01 ~]# ansible -vvv servers -m ping -u root --ask-pass -K
Using /etc/ansible/ansible.cfg as config file
SSH password:
SUDO password[defaults to SSH password]:
META: ran handlers
Using module file /usr/lib/python2.7/site-packages/ansible/modules/system /ping.py
<10.6.16.106> ESTABLISH SSH CONNECTION FOR USER: root
<10.6.16.106> SSH: EXEC sshpass -d12 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o User=root -o ConnectTimeout=10 -o ControlPath=/roo/.ansible/cp/13665ce0cd 10.6.16.106 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
**LocalHost**
[root@SELC01 ~]# ansible -vvv localhost -m ping -u root --ask-pass -K
Using /etc/ansible/ansible.cfg as config file
SSH password:
SUDO password[defaults to SSH password]:
META: ran handlers
Using module file /usr/lib/python2.7/site-packages/ansible/modules/system/ping.py
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root
<127.0.0.1> EXEC /bin/sh -c 'echo ~ && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-tmp-1496147239.75-82726750768823 `" && echo ansible-tmp-1496147239.75-82726750768823="` echo /root/.ansible/tmp/ansible-tmp-1496147239.75-82726750768823 `" ) && sleep 0'
<127.0.0.1> PUT /tmp/tmpklwEPM TO /root/.ansible/tmp/ansible-tmp-1496147239.75-82726750768823/ping.py
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1496147239.75-82726750768823/ /root/.ansible/tmp/ansible-tmp-1496147239.75-82726750768823/ping.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python2 /root/.ansible/tmp/ansible-tmp-1496147239.75-82726750768823/ping.py; rm -rf "/root/.ansible/tmp/ansible-tmp-1496147239.75-82726750768823/" > /dev/null 2>&1 && sleep 0'
localhost | SUCCESS => {
"changed": false,
"invocation": {
"module_args": {
"data": null
}
感谢您的帮助。
答案1
我修复了它,known_hosts 有问题。我删除了 10.6.16.106,ssh-keygen -R 10.6.16.106 和 ,运行 ansible ping ,它将其重新添加回来,并且成功了。
答案2
对我来说类似情况的原因是,正在运行的命令弹出了用户提示(在这种情况下pam-auth-update
提示“是否要覆盖本地更改?”并且 ansible 似乎挂起了,没有任何输出。
这是我看到的最后一条消息:
<myhost.mydomain.com> SSH: EXEC sshpass -d11 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="ansible-workstations"' -o ConnectTimeout=10 -o ControlPath=/home/myuser/.ansible/cp/613727008e -tt myhost.mydomain.com '/bin/sh -c '"'"'sudo -H -S -p "[sudo via ansible, key=bxoslxxxxxxxxxxxxxxxcecomzhwgo] password:" -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-bxoslxxxxxxxxxxxxxxxcecomzhwgo ; /usr/bin/python3 /home/ansible-workstations/.ansible/tmp/ansible-tmp-1653360662.635262-17538-210907314970534/AnsiballZ_command.py'"'"'"'"'"'"'"'"' && sleep 0'"'"''
Escalation succeeded
然后就什么都没有了,直到我按下 CTRL+C。最后我去目标主机上手动运行命令并发现了提示。然后我添加--force
到命令中,一切正常。