2012-04-04 2 views
16

Я пытаюсь настроить свой бродячий файл, чтобы иметь некоторые атрибуты шеф-повара, но я должен делать что-то неправильно, потому что рецепты шеф-повара используют значения по умолчанию вместо моих атрибутов, которые я пытаюсь установить. Вот мой конфиг часть моего бродячего файла:Vagrant File Chef Attributes

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 

Является ли мой рубин неправильно или есть лучший способ сделать это?

ответ

21

Я новенькая Vagrant, Ruby, и шеф-повар, но это то, что работает для меня:

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

Майк, вы - мужчина! Некоторые примеры имели двоеточие перед именами переменных, и я не уверен, почему. Спасибо за решение! – Clint

+0

двоеточие перед именем переменной - это рубиновый синтаксис для ключа. – jmontross

+0

@Clint: что-то является символом символа в Ruby, тогда как «что-то» является строкой. Это два разных типа. Шеф-повар (по крайней мере, в режиме клиент-сервер) обрабатывает оба символа и строки при использовании в качестве хеш-ключей одинаково, поэтому их можно использовать взаимозаменяемо. Если вы хотите больше узнать о различии между строками и символами, перейдите [здесь] (http://www.robertsosinski.com/2009/01/11/the-difference-between-ruby-symbols-and-strings/) , –

3

Я недавно столкнулся с этой же проблемой. Хотя ответ Майка не разрешил мою проблему, возможно, из-за более новых версий бродяг/шеф-поваров, он указал мне в правильном направлении. Ниже приводится то, что я должен был сделать для работы сервера MySQL:

config.vm.provision :chef_solo do |chef| 
    chef.json = { 
     :mysql => { 
      :server_root_password => "password", 
      :server_repl_password => "password", 
      :server_debian_password => "password" 
     } 
    } 
    chef.add_recipe "mysql::server" 
end 
+0

Работал для меня! Благодарю. –

Смежные вопросы