使用Chef配置不起作用构建Vagrantfile

时间:2015-04-17 20:21:01

标签: ruby vagrant chef

我正在尝试按照以下文字教程进行操作,并且我的设置在他键入"捆绑安装"的时候中断,我的设置没有安装捆绑这么清楚那里有什么不对和我的厨师一起 - https://gorails.com/guides/using-vagrant-for-rails-development

编辑:为什么这个问题被低估?我没有提供一些背景知识吗?

我运行了前两个命令。

vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-librarian-chef-nochef

我创建了一个文件夹并制作了Cheffile和Vagrantfile,如下所示:

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

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    # Use Ubuntu 14.04 Trusty Tahr 64-bit as our operating system
    config.vm.box = "ubuntu/trusty64"

    # Configurate the virtual machine to use 2GB of RAM
    config.vm.provider :virtualbox do |vb|
        vb.customize ["modifyvm", :id, "--memory", "2048"]
    end

    # Forward the Rails server default port to the host
    config.vm.network :forwarded_port, guest: 3000, host: 3000

    # Use Chef Solo to provision our virtual machine
    config.vm.provision :chef_solo do |chef|
        chef.cookbooks_path = "cookbooks"

        chef.add_recipe "apt"
        chef.add_recipe "nodejs"
        chef.add_recipe "ruby_build"
        chef.add_recipe "rbenv::vagrant"
        chef.add_recipe "rbenv::user"
        chef.add_recipe "vim"
        chef.add_recipe "mysql::server"
        chef.add_recipe "mysql::client"

        # Install Ruby 2.2.1 and Bundler
        # Set an empty root password for MySQL to make things simple
        chef.json = {
            rbenv: {
                user_installs: [{
                    user: 'vagrant',
                    rubies: ["2.2.1"],
                    global: "2.2.1",
                    gems: {
                        "2.2.1" => [
                            { name: "bundler" }
                        ]
                    }
                }]
            },
            mysql: {
                server_root_password: ''
            }
        }
    end
end

Cheffile

site "http://community.opscode.com/api/v1"

cookbook 'apt'
cookbook 'build-essential'
cookbook 'mysql', '5.5.3'
cookbook 'ruby_build'
cookbook 'nodejs'
cookbook 'rbenv', git: 'https://github.com/aminin/chef-rbenv'
cookbook 'vim'

到目前为止,我花了3天时间整天摆弄这个,我无法让它工作。我启动了我的流浪盒并没有安装捆绑器,所以我无法捆绑安装。

很明显,chef.json无法正常工作。我已经尝试过倾斜错误输出,我一直在谷歌搜索并打开数百个标签,此时我完全迷失了。

  1. 在我的chef.json中,它是如何工作的?我如何开始了解如何制作自己的chef.json?我不明白,我怎么知道写user_installs为例?

  2. 以下内容之间是否存在差异:

  3. a)config.vm.provision :chef_solo do |chef|

    b)config.vm.provision "chef solo" do |chef|

    1. 我甚至无法与Google相关的任何与厨师和食谱相关的东西,因为我知道FOOD的烹饪结果。

1 个答案:

答案 0 :(得分:0)

嗨。那里有很多问题..所以我会一次尝试1个

*)在当地,你安装了厨师 - 客户或厨师dk吗? Chefclient不会有捆绑器,chefdk在哪里。这通常也是一种更顺畅的体验。

如果您正在使用chef-client。你必须得到捆绑器gem install bundler 如果你正在使用chefdk。您可以将chefdk ruby​​添加到路径中,使用临时环境设置(eval "$(chef shell-init bash)")或仅使用chef exec bundle ...

*)半无关。但该博客上的评论可以追溯到10多个月前。我建议您查看最新教程的https://learn.chef.io/index.html

*)chef_solo和'chef solo'是不同的东西。 :chef_solo是一个符号。把它想象成在流浪语中具有特殊意义的东西。 chef solo没有任何意义 - a)它有一个空格,所以它将是两个不同的东西 - 要么变量(在你的例子中未定义),要么“厨师独奏”是一个字符串,这对于供应者。

*)搜索与厨师相关的结果,我建议使用http://docs.chef.io或包含工具名称'chef vagrant nil error'

最后,掌声离开并学习这个工具集。它太棒了,但却是一个全新的世界。