Vagrant File Chef Attributes

Clint picture Clint · Apr 4, 2012 · Viewed 8.5k times · Source

I am trying to configure my Vagrant file to have some chef attributes, but I must be doing something wrong because the chef recipes are using the defaults instead of my the attributes I am trying to set. Here is my config section of my vagrant file:

config.vm.provision :chef_solo do |chef|
    chef.json = {
      :mysql => {
        :server_root_password => 'password'
      },
      :nodejs => {
        :version => '0.6.14',
        :dir => '/usr/local',
        :npm => '1.1.13'
      }
    }
    chef.cookbooks_path = "config/env/cookbooks"
    chef.add_recipe "apt"
    chef.add_recipe "mongodb::10gen_repo"
    chef.add_recipe "mongodb"
    chef.add_recipe "mysql::client"
    chef.add_recipe "mysql::server"
    chef.add_recipe "nodejs"
    chef.add_recipe "nodejs::npm"
    #chef.add_recipe "mymc_service"

end

Is my Ruby wrong or is there a better way to do this?

Answer

Mike Branski picture Mike Branski · May 11, 2012

I'm brand new to Vagrant, Ruby, and Chef, but this is what worked for me:

config.vm.provision :chef_solo do |chef|
    chef.json = {
        "mysql" => {
            "server_root_password" => "password"
        }
    }
    chef.add_recipe "mysql" # etc
end