【问题标题】:vagrant with ansible error带有错误错误的流浪汉
【发布时间】:2015-04-06 16:57:55
【问题描述】:

如果我有带有 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

我的hosts文件很简单:

[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

当我用 wagrant up 开始 vagrant 时,出现错误:

failed: [web] => {"failed": true, "parsed": false}
[sudo via ansible, key=daxgehmwoinwalgbzunaiovnrpajwbmj] password:

有什么问题?

【问题讨论】:

  • 嗯,好像是在要求输入 sudo 密码。你在 yml 文件中配置了吗?
  • vagrnt添加到sudoers
  • @VladimirFejsov 如果您使用的是 Ubuntu 或基于 Debian 的 Linux,请参阅 this linkman page 进一步解释了它。 Kashyap 表示您的 vagrant 用户必须存在并且在远程计算机上具有 sudo 权限。正如ryekayo 指出的那样,您需要将vagrant 用户的密码存储在主机上,以便Ansible 可以检索它,可能在ansible-vault 中。

标签: vagrant ansible ansible-playbook vagrantfile


【解决方案1】:

发生错误是因为 ansible 假设基于密钥的 ssh 身份验证,但是您的 vagrant 创建 VM 是使用基于密码的身份验证。

有两种方法可以解决此问题。

你可以运行你的 ansible playbook

ansible-playbook playbook.yml --ask-pass

这将告诉 ansible 不要假设基于密钥的身份验证,而是使用基于密码的 ssh 身份验证并在执行前询问。

【讨论】:

    猜你喜欢
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2016-07-16
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多