我想使用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
是否有Vagrantfile
之外的配置变量可以覆盖此值?
答案 0 :(得分:134)
由于我在2014年回答了这个问题,我已经更新了我的答案,以便更新版本的ansible。
是的,您可以在主机/库存级别(可在newer ansible versions)或全球级别执行此操作:
广告强>:
添加以下内容。
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
<强>宿主强>:
添加以下内容。
ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
主机/广告资源选项适用于连接类型ssh
而不是paramiko
。有些人可能强烈认为库存和主机更安全,因为范围更有限。
<强>全球:强>
Ansible User Guide - Host Key Checking
您可以在/etc/ansible/ansible.cfg
或~/.ansible.cfg
文件中执行此操作:
[defaults]
host_key_checking = False
或者你可以设置和env变量(这可能不适用于较新的ansible版本):
export ANSIBLE_HOST_KEY_CHECKING=False
答案 1 :(得分:61)
根据已经接受的答案,我认为这是关于如何在库存水平上处理此问题的更好的答案。通过将此不安全设置隔离到此所需的主机(例如测试系统,本地开发机器),我认为这更安全。
您可以在库存级别执行添加
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
或
ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
到您的主机定义(请参阅Ansible Behavioral Inventory Parameters)。
如果您使用ssh
连接类型,而不是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将成功,而不会更改任何环境变量。
$ ansible vagrant -i <path/to/hosts/file> -m ping
vagrant | SUCCESS => {
"changed": false,
"ping": "pong"
}
如果您想为一组主机执行此操作,请按以下步骤建议将其作为现有组的补充组var,如下所示:
[mytestsystems]
test[01:99].example.tld
[insecuressh:children]
mytestsystems
[insecuressh:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
答案 2 :(得分:1)
我无法使用:
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
库存文件中的。在我的情况下似乎ansible不考虑这个选项(在ubuntu 14.04中来自pip的ansible 2.0.1.0)
我决定使用:
server ansible_host=192.168.1.1 ansible_ssh_common_args= '-o UserKnownHostsFile=/dev/null'
它帮助了我。
您也可以在组中为每个主机设置此变量:
[servers_group:vars]
ansible_ssh_common_args='-o UserKnownHostsFile=/dev/null'
答案 3 :(得分:1)
在/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
全部
答案 4 :(得分:0)
在使用ansible ad-hoc命令时,将以下内容添加到ansible配置中即可:
[ssh_connection]
# ssh arguments to use
ssh_args = -o StrictHostKeyChecking=no
Ansible版本
ansible 2.1.6.0
config file = /etc/ansible/ansible.cfg
答案 5 :(得分:0)
您可以在/etc/ansible/ansible.cfg
或~/.ansible.cfg
或ansible.cfg
(在当前目录中)文件中设置这些配置
[ssh_connection]
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
在ubuntu 20.04中使用ansible 2.9.6进行了测试