1

我正在尝试使用 Vagrant + Ansible 提供一些开发环境。我使用 OSX 作为主机,使用 CentOS 5.6 作为来宾。

这是我的流浪文件

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "centos56"

  config.vm.box_url = "http://dl.dropbox.com/u/9227672/centos-5.6-x86_64-netinstall-4.1.6.box"

  config.vm.provision "ansible" do |ansible|
    ansible.playbook  = "playbook.yml"
    ansible.verbose = true
  end

end

这是我的剧本:

---
- hosts: all
  tasks:
    - name: PING
      command: ping 127.0.0.1 

这是错误:

~/dev/vms/wlsCluster/master2> vagrant provision
[default] Running provisioner: ansible...

PLAY [all] ******************************************************************** 

GATHERING FACTS *************************************************************** 
fatal: [default] => {'msg': "FAILED: (25, 'Inappropriate ioctl for device')", 'failed': True}

TASK: [PING] ****************************************************************** 
FATAL: no hosts matched or all hosts have already failed -- aborting


PLAY RECAP ******************************************************************** 
       to retry, use: --limit @/Users/brunajardim/playbook.retry

default                    : ok=0    changed=0    unreachable=1    failed=0   

Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.

我读过它可能与私钥有关。而且我可以使用像*--private-key=$HOME/.vagrant.d/insecure_private_key*这样的参数来解决问题。现在,如何将vagrant provision命令与 ansible 一起使用并将此参数传递给它?

4

4 回答 4

1

奇迹般地,当我更新我的 Vagrant 和 Ansible 版本时,事情才开始起作用。我真的不知道发生了什么。现在我在 Vagrant 1.3.5 和 Ansible 1.4 (devel 6008ea40ee) 上运行。

谢谢大家的回答。

于 2013-11-13T18:55:11.387 回答
1

如果 Ansible 在非交互式环境(例如 Jenkins 构建)中尝试提示您输入(无论出于何种原因),则会出现“设备不适当的 ioctl”错误消息。这里缺少的“设备”是 TTY。

大概是 Ansible 提示您确认主机密钥或密码。

于 2014-09-29T20:49:31.980 回答
0

您已经声明您使用的是 OSX,因此这应该不是问题,但值得研究并可能会帮助其他人遇到相同的“设备不适当的 ioctl”错误。

在 Windows 上,这可能意味着您的一个或多个文件中的 CRLF 行结尾存在问题。如果您使用的是 Eclipse,您可以在File->Convert Line Delimiters下转换行尾。也许让您的编辑器显示空白字符,这可能会告诉您行尾是什么。

将 Vagrantfile 转换为正确的行尾解决了我的配置中的这些错误(尽管在 Windows 上,我必须使用 shell 配置程序在来宾 VM 上启动 Ansible)以及“dpkg-reconfigure:无法重新打开标准输入”的奇怪错误:没有文件或目录”

于 2013-11-06T00:39:43.613 回答
0

虽然你已经解决了这个问题,但是为了以后参考,请将私钥添加到Vagrantfile这样的:

config.ssh.private_key_path = "$HOME/.vagrant.d/insecure_private_key"
于 2015-01-17T20:36:18.033 回答