如何在安全库存文件中设置host_key_checking = false?

我想使用ansible-playbook命令而不是' vagrant provision '。 但是,在hosts文件中设置host_key_checking=false似乎不起作用。

 # 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 

Vagrantfile以外的configurationvariables是否可以覆盖此值?

是的,但不在主机/库存级别。 你可以在全球范围内做到这一点。

  • 您可以在/etc/ansible/ansible.cfg~/.ansible.cfg文件中执行此操作:

     [defaults] host_key_checking = False 
  • 或者你可以从命令行传递它:

     ansible-playbook -e 'host_key_checking=False' yourplaybook.yml 
  • 或者你可以设置和envvariables(这可能不适用于更新的版本):

     export ANSIBLE_HOST_KEY_CHECKING=False 

是的,您可以在库存/主机级别上设置。

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

你可以在库存水平做什么是增加

 ansible_ssh_common_args='-o StrictHostKeyChecking=no' 

要么

 ansible_ssh_extra_args='-o StrictHostKeyChecking=no' 

到你的主机定义(见Ansible行为清单参数 )。

这将工作提供您使用ssh连接types,而不是paramiko或其他)。

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

 vagrant ansible_port=2222 ansible_host=127.0.0.1 ansible_ssh_common_args='-o StrictHostKeyChecking=no' 

要么

 vagrant ansible_port=2222 ansible_host=127.0.0.1 ansible_ssh_extra_args='-o StrictHostKeyChecking=no' 

运行Ansible将成功,而不需要改变任何环境variables。

 $ ansible vagrant -i <path/to/hosts/file> -m ping vagrant | SUCCESS => { "changed": false, "ping": "pong" } 

如果你想这样做的一组主机,这里有一个build议,使其成为一个现有的组这样的补充组variables:

 [mytestsystems] test[01:99].example.tld [insecuressh:children] mytestsystems [insecuressh:vars] ansible_ssh_common_args='-o StrictHostKeyChecking=no' 

我无法使用:

 ansible_ssh_common_args='-o StrictHostKeyChecking=no' 

在清单文件中。 这似乎是可能的不考虑这个选项在我的情况(从ubuntu 14.04 pip中ansible 2.0.1.0)

我决定使用:

 server ansible_host=192.168.1.1 ansible_ssh_common_args= '-o UserKnownHostsFile=/dev/null' 

它帮助了我。

你也可以在组中设置这个variables,而不是每个主机:

 [servers_group:vars] ansible_ssh_common_args='-o UserKnownHostsFile=/dev/null' 

/etc/ansible/ansible.cfg取消注释该行:

 host_key_check = False 

并在/etc/ansible/hosts取消注释该行

 client_ansible ansible_ssh_host=10.1.1.1 ansible_ssh_user=root ansible_ssh_pass=12345678 

就这样