如果我有带有ansible配置的Vagrantfile:
Vagrant.configure(2) do |config|
config.vm.box = 'hashicorp/precise32'
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.provision :ansible do |ansible|
ansible.playbook = "playbook.yml"
ansible.inventory_path = "hosts"
ansible.limit = 'all'
ansible.sudo = true
end
end
我的主机文件非常简单:
[local]
web ansible_connection=local
和playbook.yml是:
---
- hosts: local
sudo: true
remote_user: vagrant
tasks:
- name: update apt cache
apt: update_cache=yes
- name: install apache
apt: name=apache2 state=present
当我开始流浪汉时,我得到了错误:
failed: [web] => {"failed": true, "parsed": false}
[sudo via ansible, key=daxgehmwoinwalgbzunaiovnrpajwbmj] password:
问题是什么?
答案 0 :(得分:0)
发生错误是因为ansible正在假设基于密钥的ssh身份验证,但是您的流浪者正在创建VM是使用基于密码的身份验证。
有两种方法可以解决这个问题。
您可以将您的ansible剧本作为
运行ansible-playbook playbook.yml --ask-pass
这将告诉ansible不要假设基于密钥的身份验证,而是使用基于密码的ssh身份验证并在执行前询问一个。