2012-04-04 10 views
16

Próbuję skonfigurować mój plik Vagrant, aby mieć pewne atrybuty szefa kuchni, ale muszę robić coś nie tak, ponieważ przepisy szefa kuchni używają wartości domyślnych zamiast moich atrybutów, które próbuję ustawić. Oto moja sekcja config mojego Vagrant pliku:Atrybut szefa plików Vagrant

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 

Czy mój Ruby źle czy istnieje lepszy sposób to zrobić?

Odpowiedz

21

Jestem nowy na Vagrant, Ruby, i szef kuchni, ale to, co pracował dla mnie:

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

Mike, jesteś mężczyzną! Niektóre przykłady miały dwukropek przed nazwami zmiennych i nie jestem pewien dlaczego. Dzięki za rozwiązanie! – Clint

+0

dwukropek przed nazwą zmiennej jest składnią ruby ​​dla klucza. – jmontross

+0

@ Clint the: something to literał dosłowny w języku Ruby, natomiast "coś" to ciąg. Są to dwa różne typy. Szef kuchni (przynajmniej w trybie klient-serwer) traktuje Symbole i Łańcuchy, gdy jest używany jako klucze mieszające w ten sam sposób, więc można ich używać zamiennie. Jeśli chcesz przeczytać więcej na temat różnicy między łańcuchami i symbolami przejdź do [tutaj] (http://www.robertsosinski.com/2009/01/11/the-difference-between-ruby-symbols-and-strings/) . –

3

Niedawno wpadłem na tej samej kwestii. Podczas gdy odpowiedź Mike'a nie rozwiązała mojego problemu, prawdopodobnie z powodu nowszych wersji Vagrant/Chef, wskazał mi to we właściwym kierunku. Oto, co musiałem zrobić, aby serwer MySQL działał:

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

Pracowałem dla mnie! Dzięki. –