我想用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.有些人可能强烈反对库存和主机更安全,因为范围更有限.
全球:
你可以在/etc/ansible/ansible.cfg或~/.ansible.cfg文件中做到:
[defaults]
host_key_checking = False
Run Code Online (Sandbox Code Playgroud)或者您可以从命令行传递它:
export ANSIBLE_HOST_KEY_CHECKING=False
Run Code Online (Sandbox Code Playgroud)或者你可以设置和env变量(这可能不适用于较新的ansible版本):
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
Run Code Online (Sandbox Code Playgroud)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)
我无法使用:
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)