0

我正在尝试引导一个 vagrant vm 并使用以下命令安装 chef

knife bootstrap localhost -p 2222 -x vagrant -P vagrant --sudo

但什么都没有发生 - 在这个粘贴箱中没有看到错误消息 - http://pastebin.com/06pyGAHZ请建议?我错过了什么...

我的流浪文件供参考 - http://pastebin.com/djncyWNn

更新:我可以尝试 vagrant provision 它可能会起作用。但令我困惑的是

1)尽管它是一个流浪虚拟机,但它没有什么不同,它有一个 IP 地址,我可以使用 ssh vagrant@localhost -p 2222 从本地机器 ssh

2)刀语句没有给出任何错误信息,它默默地什么也不做

4

2 回答 2

1

要使此工作正常工作,请使用 VM 的桥接网络设置更新您的 Vagrantfile。

db_config.vm.box = "Ubuntu12.04cloud"

db_config.vm.network:桥接

这会将VM带到您的网络上,并且不会在Virtualbox的nat接口上,我不确定为什么它不能在nat接口上工作,但可能是因为来宾添加不是最新的。一旦完成 ssh 到该框并检查桥接 IP 地址是什么,如果您的 dns 设置正确,您可以更新该框的 FQDN。

要引导 Box,请使用指向桥接 IP 的 FQDN 或仅使用桥接 IP 地址。现在这个灵魂工作。

下面是我在没有 Chef 的情况下下载的 ubuntu 盒子的输出,并使用上述方法引导了 Vagrant VM。

https://gist.github.com/vinitkhandagle/5164417

于 2013-03-14T19:39:33.380 回答
1

这是使用刀直接引导 Vagrant VM 的另一种方法:为什么不使用内置的 Vagrant Chef 配置器呢?这样做时,您不需要在 Vagrant VM 上安装 Chef,但您仍然可以使用 Chef 配置它们。

在你的 Vagrant.configure("2") 下做 |config| 行,你可以像这样添加它:

config.omnibus.chef_version = :latest

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|

  config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"
  config.omnibus.chef_version = :latest

  config.vm.define :oak do |oak|
    oak.vm.box = "hashicorp/precise64"
    oak.vm.provision "chef_client" do |client|
      client.chef_server_url = "https://my-chef-server:443"
      client.validation_key_path = "/home/me/.chef/chef-validator.pem"
      client.add_role "base"
      client.add_recipe "users"
      client.add_recipe "nginx"
      client.environment = "development"
    end
  end

  config.vm.define :maple do |maple|
    ...
于 2014-09-24T21:47:36.050 回答