无法登录通过Test Kitchen管理的Vagrant虚拟机

9
我有一个非常通用的`.kitchen.yml`文件,包含以下内容:
---
driver:
  name: vagrant
platforms:
  - name: ubuntu-14.04
suites:
   - name: default
   run_list:
    - recipe[webserver::default]

当我运行 kitchen converge 命令时,我会得到以下输出:
==> default: Setting hostname...
   ==> default: Replaced insecure vagrant key with less insecure key!
   ==> default: Machine not provisioned because `--no-provision` is specified.
   Waiting for SSH service on 127.0.0.1:2222, retrying in 3 seconds
   Waiting for SSH service on 127.0.0.1:2222, retrying in 3 seconds
   Waiting for SSH service on 127.0.0.1:2222, retrying in 3 seconds
   .....
   ......

经过一番搜索,我发现 Vagrant 1.7+ 使用了他们认为是不那么不安全的密钥来替换默认的ssh密钥。虽然有config.ssh.insert_key = false这个选项,但是由于以下原因无法生效:
  1. kitchen.yml中的insert_key = false进行更新。

    1.1 这并不起作用,因为生成的Vagrantfile文件将布尔值false作为“false”字符串

  2. 尝试使用全局Vagrantfile文件

    2.1 这没有起作用,就好像该文件甚至未被读取!

  3. 尝试构建自己的box,但失败了。

是否有人成功解决或有解决此问题的方法?

你使用的 Vagrant 版本是什么?以防万一,请阅读此链接:https://github.com/mitchellh/vagrant/issues/7631 - Vicente Olivert Riera
1
1.8.5!我想我应该尝试1.8.4。 - Sam Hammamy
请告诉我它是否有效,这样我们就可以将其作为其他人的答案。 - Vicente Olivert Riera
你是否曾经成功地执行过 kitchen converge?当我的 BIOS 没有启用虚拟化时,我遇到了相同的错误。 - Mrigesh Priyadarshi
@MrigeshPriyadarshi 是的,我在这台电脑上成功地执行了kitchen。今天早上我会尝试降级到1.8.4并在这里更新。 - Sam Hammamy
6个回答

18

显然,其他修复方法解决了原帖作者的问题,但对我没有用。如果这对别人有用,那我在这里发一下......

在排除问题几个小时后,我最终注意到在VirtualBox Manager中,在设置/网络/高级下,"已连接电缆" 复选框未被选中! 我的虚拟机的虚拟电缆没连上?(大叹气)

我通过将以下内容添加到.kitchen.yml文件来解决此问题:

driver: name: vagrant customize: cableconnected1: 'on'

我不知道为什么虚拟机会出现未插好电缆的情况。我不认为我的解决方法是自然的解决方法,但这是我能想到的唯一解决办法,并且它有效。

更新:对于所有通过Google找到本文的人来说,新版本的Vagrant和VBox不再需要这样做。


我有相同的问题,但我无法确定为什么它开始发生。不过这暂时解决了问题,谢谢! - John Lemp
运行 Test Kitchen version 1.8.0 时出现了超时问题。现在添加了 cableconnected1: 'on' 后已经解决了。 - georger
感谢修复!我在VirtualBox 5.0.30、Vagrant 1.9.1、Test Kitchen 1.14.2、kitchen-vagrant 0.21.1(哦,这是使用bento/ubuntu-16.10时)也遇到了同样的问题。 - Patrick
如果您使用的是1月12日之后下载的最新工具(在1/12上:ChefDK 1.1.16,test-kitchen 1.14.2,vagrant 1.9.1)适用于Ubuntu(已确认适用于14.04 + 16.04),那么这应该是正确的答案。 - Joe Goggins
1
同样的厨房/厨师汤混合物,我得到了“在127.0.0.1:2200上等待SSH服务,3秒后重试”的消息,而不是原始错误。 - Chaim Eliyah

4

我是kitchen-vagrant的维护者,我想让大家知道这个问题完全与Vagrant、VirtualBox和bento boxes的矩阵有关。

检查版本:

VBoxManage --version vagrant --version vagrant box list | grep bento/

简而言之,有一系列的Vagrant和VirtualBox版本发布引起了各种混乱,所以取决于bento boxes测试/构建的版本,你可能会或可能不会遇到这个问题。

目前,以下配置被确认可以正常工作:

kitchen-vagrant 1.2.1 Vagrant 2.0.0 VirtualBox 5.1.28 bento boxes version 201708.22.0+

用户可以在Vagrant Cloud上查看盒子,并查看任何给定盒子的测试结果,例如bento/14.04 version 201708.22.0。它现在是一个丑陋的JSON blob,但非常有用,因为你可以看到它是如何构建/测试的。上传的任何盒子都会通过kitchen run进行测试,以测试其基本功能以及大多数*平台的共享文件夹支持。

*这里的“大多数”是指除了已知的问题发行版和FreeBSD之外的几乎所有东西。


尝试使用完全相同的配置,但无法工作,出现“等待SSH服务...”消息,此现象持续很久。确切版本为:kitchen-vagrant(1.2.1)Vagrant 2.0.0VBox:5.1.28r117968bento/ubuntu-14.04(virtualbox,201708.22.0),如果有关系的话:test-kitchen(1.17.0) - Daniel

2

我的情况和 ubuntu-14.04 一样。 - Daniel

1

我遇到了同样的问题,只需要更新 kitchen-vagrant gem 即可。首先通过执行 $ gem list 命令查看已安装的 gem 版本,如下所示:

... kitchen-vagrant (0.20.0) ...

然后执行 gem update kitchen-vagrant 命令,并重新运行 kitchen verify 命令。


1
我将版本从vagrant降级到了1.8.4,它奏效了。
我必须运行kitchen destroy blah来删除使用1.8.5创建的实例。然后当我运行kitchen converge blah时,它奏效了。

1
不幸的是,这样做的副作用是失去了对VirtualBox 5.1.x的支持,这是在Vagrant 1.8.5中引入的。因此,任何更新Kitchen以支持VBox 5.1的人都必须降级才能使用此修复程序 - 并希望他们没有在任何非Kitchen VM上安装VBox 5.1.x的客户端插件。 - Adrian

0
我用过的配置是:
PS> vboxmanage --version
5.1.26r117224
PS> gem list | grep kitchen-vagrant
kitchen-vagrant (1.2.1)
PS> vagrant --version
Vagrant 1.9.6

使用 ChefDK 2.3.4.1 版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接