默认情况下,ansible
需要接受服务器的SSH fingerprint到known_hosts
才能访问,并且由于ansible
没有使用系统的ssh
客户端,所以并不会因为/etc/ssh/ssh_config
中设置了以下配置就不校验SSH服务器
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
解决的方法是先使用ssh-keyscan
扫描主机将host fingerprint添加
for i in $(cat hostnames.txt)
do
ssh-keyscan $i >> ~/.ssh/known_hosts
done
另一种方法是设置环境变量ANSIBLE_HOST_KEY_CHECKING=False
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook -i host_ip_list ansible_example_playbook.yaml
高版本
ansible
还可以使用-e 'host_key_checking=False'
,例如
ansible-playbook -e 'host_key_checking=False' -i host_ip_list ansible_example_playbook.yaml
或者在配置文件 /etc/ansible/ansible.cfg
or ~/.ansible.cfg
中设置
[defaults]
host_key_checking = False