是否有一种方法可以忽略由Ansible做出的SSH真实性检查?例如,当我刚刚安装了一个新服务器时,我必须回答这个问题:

GATHERING FACTS ***************************************************************
The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:yy:zz:....
Are you sure you want to continue connecting (yes/no)?

我知道这通常是一个坏主意,但我将它合并到一个脚本中,该脚本首先在我的云提供商创建一个新的虚拟服务器,然后自动调用我的ansible playbook来配置它。我希望在脚本执行过程中避免任何人为干预。


当前回答

我知道这个问题已经得到了回答,这也是正确的,但只是想链接ansible文档,其中清楚地解释了何时以及为什么应该添加相应的检查:host-key-checking

其他回答

如果你不想修改ansible.cfg或者playbook。Yml,然后你可以设置一个环境变量:

export ANSIBLE_HOST_KEY_CHECKING=False

我知道这个问题已经得到了回答,这也是正确的,但只是想链接ansible文档,其中清楚地解释了何时以及为什么应该添加相应的检查:host-key-checking

您可以简单地告诉SSH自动接受新主机的指纹。只需添加

StrictHostKeyChecking=accept-new

到您的~/.ssh/config。它并没有完全禁用主机密钥检查,只是禁用了是否要向已知主机列表添加新指纹这个恼人的问题。如果已知机器的指纹发生了变化,您仍然会得到错误。

此策略还适用于ANSIBLE_HOST_KEY_CHECKING和其他将此参数传递给SSH的方式。

我找到答案了,你需要将环境变量ANSIBLE_HOST_KEY_CHECKING设置为False。例如:

ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook ...

尼克贝利亚

对于那些使用jenkins运行playbook的人,我刚刚在运行ansible-playbook之前添加了环境变量ANSIBLE_HOST_KEY_CHECKING = False 例如这个:

export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook 'playbook.yml' \
--extra-vars="some vars..." \
--tags="tags_name..." -vv