如何在安全库存文件中设置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
就这样