如何设置host_key_checking =在ansible库存档案造假?

mbd*_*dev 99 ansible

我想用ansible-playbook的,而不是"命令vagrant provision".但是设置host_key_checking=false了在hosts文件中似乎没有工作.

# hosts file
vagrant ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key 
ansible_ssh_user=vagrant ansible_ssh_port=2222 ansible_ssh_host=127.0.0.1 
host_key_checking=false
Run Code Online (Sandbox Code Playgroud)

是否有外部的配置变量Vagrantfile可以覆盖这个值?

Ric*_*ico 156

由于我在2014年回答了这个问题,我已经更新了我对ansible更新版本的说明.

是的,您可以在主机/库存级别(在较新的ansible版本上成为可能)或全局级别执行此操作:

库存:

添加以下内容.

ansible_ssh_common_args='-o StrictHostKeyChecking=no'
Run Code Online (Sandbox Code Playgroud)

主持人:

添加以下内容.

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
Run Code Online (Sandbox Code Playgroud)

hosts/inventory选项将使用连接类型ssh而不是paramiko.有些人可能强烈反对库存和主机更安全,因为范围更有限.

全球:

  • 我正在使用ansible 1.7.2,我的经验是环境变量`ANSIBLE_HOST_KEY_CHECKING`可以工作,但`-e'host_key_checking = False'`不起作用. (28认同)
  • 您的第一个声明"是,但不是在主机/库存级别"是错误的.你可以使用`ansible_ssh_common_args =' - o StrictHostKeyChecking = no'`或`ansible_ssh_extra_args =' - o StrictHostKeyChecking = no'` (6认同)
  • 在运行我的剧本之前,只有最后一个选项对我有用(导出 ANSIBLE_HOST_KEY_CHECKING=False)。 (2认同)

ger*_*ijk 64

是的,您可以在库存/主机级别设置此项.

有了已经接受的答案,我认为这是关于如何在库存水平上处理这个问题的更好的答案.通过将此不安全设置隔离到此所需的主机(例如,测试系统,本地开发机器),我认为这更安全.

您可以在库存级别执行的操作是添加

ansible_ssh_common_args='-o StrictHostKeyChecking=no'
Run Code Online (Sandbox Code Playgroud)

要么

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
Run Code Online (Sandbox Code Playgroud)

到主机定义(参见Ansible Behavioral Inventory Parameters).

如果你使用ssh连接类型,这将工作,而不是paramiko其他).

例如,Vagrant主机定义看起来像......

vagrant ansible_port=2222 ansible_host=127.0.0.1 ansible_ssh_common_args='-o StrictHostKeyChecking=no'
Run Code Online (Sandbox Code Playgroud)

要么

vagrant ansible_port=2222 ansible_host=127.0.0.1 ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
Run Code Online (Sandbox Code Playgroud)

然后运行Ansible将成功,而不会更改任何环境变量.

$ ansible vagrant -i <path/to/hosts/file> -m ping
vagrant | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
Run Code Online (Sandbox Code Playgroud)

如果你想为一组主机执行此操作,这里建议将其作为现有组的补充组var,如下所示:

[mytestsystems]
test[01:99].example.tld

[insecuressh:children]
mytestsystems

[insecuressh:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
Run Code Online (Sandbox Code Playgroud)

  • 这是一个更好的答案. (4认同)

vsk*_*iev 5

我无法使用:

ansible_ssh_common_args='-o StrictHostKeyChecking=no'
Run Code Online (Sandbox Code Playgroud)

在清单文件中。在我的情况下,ansible 似乎不考虑这个选项(ansible 2.0.1.0 from pip in ubuntu 14.04)

我决定使用:

server ansible_host=192.168.1.1 ansible_ssh_common_args= '-o UserKnownHostsFile=/dev/null'
Run Code Online (Sandbox Code Playgroud)

它帮助了我。

您也可以为每个主机在组中设置此变量:

[servers_group:vars]
ansible_ssh_common_args='-o UserKnownHostsFile=/dev/null'
Run Code Online (Sandbox Code Playgroud)