有没有办法告诉Ansible不要使用~/.ssh/config文件?

6

我的~/.ssh/config文件干扰了ansible,我在那里使用了很多缩写,以便在登录服务器时更轻松地进行操作。

例如:

Host te*
     HostName %h.example.com
     User test

在我的ansible主机文件中,我有:

[servers]
te1.exmaple.com
te2.example.com

这意味着当我运行ansible时,连接将失败,因为它将使用我的ssh配置文件并尝试连接到te1.example.com.example.com
我知道我可以修改ansible主机名只为te1,并让ssh配置添加其余的域,但我知道我的团队中的其他成员没有像我这样设置他们的.ssh/config,所以这不是一个真正的选择,而且老实说,这是一条易错路线,最终会给其他人带来问题。
在ansible中有没有一种方法告诉它不要使用我的或任何其他人的.ssh/config文件?
3个回答

5
您可以在ansible.cfg中使用ANSIBLE_SSH_ARGS参数。所需的ssh参数是-F configfile,其含义如下:

-F configfile

指定另一个每个用户的配置文件。如果在命令行上给出了配置文件,则系统范围内的配置文件(/etc/ssh/ssh_config)将被忽略。每个用户配置文件的默认值为~/.ssh/config。

因此,带有默认值的ANSIBLE_SSH_ARGSansible.cfg中看起来像这样:

ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -F /dev/null

2
ssh -F命令允许您指定“替代的每个用户配置文件”。

-F configfile 指定替代的每个用户配置文件。如果在命令行上给出配置文件,则系统范围内的配置文件(/etc/ssh/ssh_config)将被忽略。每个用户配置文件的默认值是~/.ssh/config。

在Ansible中,您可以通过ANSIBLE_SSH_ARGS进行配置。
例如,在ansible.cfg中,您可以将其设置为任何适合您需求的文件。
[ssh_connection]
ssh_args = -F ...

或者,您可能想要创建一个单独的用户(比如说ansible-admin),设置她的~/.ssh/config文件,并使用它来运行ansible。

1
这是最终对我有效的方法。我将其添加到我的ansible.cgf文件中。
[all:vars] ansible_ssh_common_args = '-F /dev/null'
感谢所有回答者 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接