是否可以告诉ansible不要使用〜/ .ssh / config?

时间:2019-01-14 11:38:48

标签: ssh ansible

我的range文件干扰了ansible,我在其中使用了许多缩写以简化登录服务器时的生活。

例如:

front:
  ingress:
    enabled: true
    annotations:
      kubernetes.io/ingress.class: nginx-int
      nginx.ingress.kubernetes.io/rewrite-target: /
      nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
    paths:
      - /
    hosts:
      - myhost.mydomain.cloud
    tls: []

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

~/.ssh/config

这意味着当我运行ansible时,连接将失败,因为它将使用我的ssh配置文件并尝试连接到Host te* HostName %h.example.com User test

我知道我可以将ansible主机修改为te1,然后让ssh config添加域的其余部分,但是我知道我团队中的其他成员没有像我这样设置.ssh / config,所以这不是并不是真正的选择,而tbh是简单的方法,最终会给其他人带来麻烦。

是否有一种方法可以告诉它不要使用我的文件或其他[servers] te1.exmaple.com te2.example.com 文件?

3 个答案:

答案 0 :(得分:1)

ssh -F 允许您指定“每个用户的备用配置文件”。

  

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

在Ansible中,您可以通过ANSIBLE_SSH_ARGS对其进行配置。

例如,在ansible.cfg中,可以将其设置为适合您需要的任何文件。

[ssh_connection]
ssh_args = -F ...

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

答案 1 :(得分:1)

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

  

-F configfile

     

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

因此,您的ANSIBLE_SSH_ARGS(其中包含ansible.cfg中的默认值)将如下所示:

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

答案 2 :(得分:1)

这最终对我有用。我将此添加到主机文件。

[all:vars] ansible_ssh_common_args = '-F /dev/null'

感谢所有回答:)