使用Chef / knife引导Vagrant VM的问题?

时间:2013-03-12 22:10:18

标签: chef vagrant bootstrapping knife

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

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

但没有发生任何事情 - 此粘贴框中没有显示错误消息 - http://pastebin.com/06pyGAHZ请咨询一下?我错过了什么......

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

更新: 我可以尝试它可能有用的流浪者条款。但令我困惑的是这个

1)虽然它是一个流浪者的vm,但它没有什么不同,它有一个ip地址,我可以使用ssh vagrant @ localhost -p 2222从本地机器ssh

2)刀子声明没有给出任何错误信息,它默默无效

2 个答案:

答案 0 :(得分:1)

要使此工作更新您的Vagrantfile,并为VM提供桥接网络设置。

db_config.vm.box =“Ubuntu12.04cloud”

db_config.vm.network:bridged

这会将VM带到您的网络上,而且它不会出现在Virtualbox的虚拟接口上,我不知道为什么它不能在natted接口上运行,但可能是因为guest添加不是最新的。完成ssh到框并检查桥接的IP地址是什么,如果你有正确的DNS设置,你可以更新该框的FQDN。

要引导Box,请使用指向Bridged IP的FQDN或仅使用Bridged IP地址。这现在可以工作了。

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

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

答案 1 :(得分:1)

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

在你的Vagrant.configure下(" 2")do | 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|
    ...