从木偶移到Ansible。 就像它没有代理和SSH驱动一样。 我只是设置了两个testing虚拟机。 一个作为Ansible服务器(是矫枉过正),另一个作为示例客户端(随机Linux服务器)。 我们所有的服务器都只使用公共密钥对authentication。 最初对于Ansible来说,这是有些问题的。 我很(几乎可以肯定)Ansible可以使用密钥对,但是我似乎找不到一个很好的例子。
我通过做一个专门为Ansible创build了一个密钥对
ssh-keygen -t rsa -b 4096
然后我把公钥复制到客户端。 当我通过标准的SSH进行testing时,密钥对身份validation非常有效。 现在来testingAnsible。 我把testing客户端放在Ansible主机文件中,并使用唯一正确的语法来使密钥对工作。
[TEST] 10.0.0.5 ansible_ssh_private_key_file=~/.ssh/id_rsa
当我尝试运行一个像这样的基本testing模块
sudo ansible all -m ping
我收到以下错误信息
10.0.0.5 | FAILED => SSH Error: Permission denied (publickey,password). while connecting to 10.0.0.5:22 It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
显然,我的语法或概念理解如何设置Ansible使用的关键对是有缺陷的。 有什么build议么? 谢谢
DUH! 在正确的configuration文件(/etc/ansible/ansible.cfg)中,
# if set, always use this private key file for authentication, same as # if passing --private-key to ansible or ansible-playbook private_key_file = /home/<username>/.ssh/id_rsa
现在一切似乎工作
10.0.0.5 | success >> { "changed": false, "ping": "pong" }
如果您再次遇到SSH问题,请在命令行选项中添加-vvv,它会告诉您哪里出了问题。