如何配置Ansible以使用我的本地SSH配置?

时间:2014-11-09 16:30:11

标签: ssh ansible

我正在测试Ansible,我已经陷入了一个相当简单的事情。我将/etc/ansible/hosts配置为包含我的服务器的IP:

[web]
1.2.3.4

现在,使用ansible all -vvvv -m ping连接到它失败,因为指定服务器的~/.ssh/config使用自定义端口,不在默认位置的密钥文件等。我如何告诉Ansible重用我的连接的SSH配置?

2 个答案:

答案 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取得成功还有很长的路要走。