关于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}
这似乎表明未使用环境变量。
关于如何在运行时更改此设置的任何想法?
答案 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