在剧本定义上禁用主机密钥检查

时间:2018-08-07 13:30:23

标签: ansible

关于How to set host_key_checking=false in ansible inventory file?,我想知道是否可以在剧本定义上更改此设置。

我的剧本被自动调用,在启动剧本之前,我无法使用export来设置ENV变量。

这是我尝试过的:

---
- hosts: localhost
  environment:
    ANSIBLE_HOST_KEY_CHECKING: false
  roles:
    - including_vars

问题是,如果我在剧本任务期间添加主机,则会出现以下错误:

  

不可逾越! => {“已更改”:false,“ msg”:“无法通过ssh连接到主机:主机密钥验证失败。\ r \ n”,“无法访问”:true}

这似乎表明未使用环境变量。

关于如何在运行时更改此设置的任何想法?

2 个答案:

答案 0 :(得分:1)

您可以在剧本的vars部分中设置ansible_host_key_checking / ansible_ssh_host_key_checking

---
- hosts: localhost
  vars:
    ansible_host_key_checking: false
  roles:
    - including_vars

重要提示:在启用流水线功能的情况下进行测试时,请给SSH时间使持久连接失效,否则可能尚未应用更改的设置。


您还可以使用host_key_checking创建一个内存中的广告资源,并对该广告资源进行实际播放(这也适用于早于2.5的Ansible版本):

----
- hosts: localhost
  connection: local
  gather_facts: false
  tasks:
    - add_host:
        name: my_host
        ansible_host: myhost.example.com
        host_key_checking: false

- hosts: my_host
  tasks:
    - ping:

答案 1 :(得分:0)

您不是应该使用env:而不是environment:吗?例如

---
- hosts: localhost
  env:
    ANSIBLE_HOST_KEY_CHECKING: false
  roles:
    - including_vars