我试图在多台服务器上运行ansible角色,但是我收到错误:
致命:[192.168.0.10]:无法访问! => {"更改":false," msg": "无法通过ssh连接到主机。","无法访问":true}
我的/ etc / ansible / hosts文件如下所示:
192.168.0.10 ansible_sudo_pass='passphrase' ansible_ssh_user=user
192.168.0.11 ansible_sudo_pass='passphrase' ansible_ssh_user=user
192.168.0.12 ansible_sudo_pass='passphrase' ansible_ssh_user=user
我不知道发生了什么 - 一切都很好 - 我可以通过SSH登录,但是ansible ping会返回相同的错误。
详细执行的日志:
你能以某种方式帮助我吗?如果我必须在本地模式下使用ansible(-c local),那么它就没用了。< 192.168.0.10>建立用户的SSH连接:用户< 192.168.0.10> SSH:EXEC ssh -C -vvv -o ControlMaster = auto -o ControlPersist = 60s -o KbdInteractiveAuthentication = no -o PreferredAuthentications = GSSAPI与 - 麦克风,GSSAPI-keyex,基于主机的,公钥 -o PasswordAuthentication = no -o User = user -o ConnectTimeout = 10 -o ControlPath = / root / .ansible / cp / ansible-ssh-%h-%p-%r 192.168.0.10 ' / bin / sh -c'"'"'(umask 22& mkdir -p"
echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829
& #34;&& echo"echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829
" )'"'"''
我试图删除ansible_sudo_pass和ansible_ssh_user,但它确实没有帮助。
答案 0 :(得分:39)
您还需要更改ansible_ssh_pass
或ssh密钥,例如我在清单文件中使用此密码:
192.168.33.100 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant
之后我可以连接到远程主机:
ansible all -i tests -m ping
具有以下结果:
192.168.33.100 | SUCCESS => {
"changed": false,
"ping": "pong"
}
希望能帮助你。
答案 1 :(得分:4)
mkdir /etc/ansible
cat > hosts
default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key
转到您的playbook目录并运行ansible all -m ping
答案 2 :(得分:2)
尝试将您的主机文件修改为:
192.168.0.10
192.168.0.11
192.168.0.12
答案 3 :(得分:1)
我有这个问题,但原因与其他答案中记载的原因不同。我尝试部署的主机只能通过跳转框才能使用。最初,我认为这是因为Ansible没有识别我的SSH配置文件,但确实如此。对我来说,解决方案是确保SSH配置文件中存在的用户与Ansible playbook中的用户匹配。这解决了我的问题。
答案 4 :(得分:0)
重新加载vm时,ansible_ssh_port发生了变化。
==>默认值:引导VM ...
==>默认值:等待机器启动。这可能需要几分钟......
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
所以我必须按如下方式更新库存/主机文件:
default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user='centos' ansible_ssh_private_key_file=<key path>
答案 5 :(得分:0)
$ansible -m ping all -vvv
在Ubuntu或CentOS上安装ansible之后。
你可以在下面留言。不要惊慌,您必须拥有用户[/tmp
]的文件/home/user_name/.ansible/tmp/
的访问权限。
&#34; Authentication or permission failure
&#34;
这种先入为主将解决问题。
[Your_server ~]$ ansible -m ping all
rusub-bm-gt | SUCCESS => {
"changed": false,
"ping": "pong"
}
Your_server | SUCCESS => {
"changed": false,
"ping": "pong"
}
答案 6 :(得分:0)
对我来说是最佳实践,我正在使用SSH密钥访问服务器主机
1。在清单文件夹中创建主机文件
[示例]
example1.com
example2.com
example3.com
2。创建ansible-playbook文件playbook.yml
---
-主机:
-全部
-角色:
-示例
3。让我们尝试在多台服务器主机上部署ansible-playbook
ansible-playbook playbook.yml -i清单/主机示例-无业游民