我正在测试Ansible,我已经陷入了一个相当简单的事情。我将/etc/ansible/hosts
配置为包含我的服务器的IP:
[web]
1.2.3.4
现在,使用ansible all -vvvv -m ping
连接到它失败,因为指定服务器的~/.ssh/config
使用自定义端口,不在默认位置的密钥文件等。我如何告诉Ansible重用我的连接的SSH配置?
答案 0 :(得分:7)
它有点深奥,所以你错过了它是可以理解的。这是from the Ansible Inventory page:
如果您拥有在非标准SSH端口上运行的主机,则可以在主机名后面添加带冒号的端口号。 SSH配置文件中列出的端口不会与paramiko连接一起使用,但会与openssh连接一起使用。
为了使事情明确,建议您在默认端口
上没有运行时设置它们
所以,在你的情况下:
[web]
1.2.3.4:9000
(当然,使用9000
作为您的alt端口)
Ansible uses paramiko on systems with a dated version of ssh,例如CentOS / RHEL。
答案 1 :(得分:3)
tedder42说什么加上还有其他一些稍微更高级的方法来定义你的ssh配置。
[web]
1.2.3.4 ansible_ssh_port=9000
如果您还使用其他ansible_ssh特殊变量(如ansible_ssh_user和ansible_ssh_host),这才有意义。
如果您希望能够通过您选择的名称而不是IP来引用服务器,那么<p> ansible_ssh_host非常有用。[web]
apache ansible_ssh_host=1.2.3.4 ansible_ssh_port=9000
如果您最终拥有多个具有相同替代ssh端口的主机,则可以使用Ansible的组变量功能。
[web]
1.2.3.4
5.6.7.8
9.10.11.12
[web:vars]
ansible_ssh_port=9000
现在Ansible将在网络组中的所有三台主机上使用端口9000。
了解如何整理库存数据对于您使用Ansible取得成功还有很长的路要走。