2012-04-04 1 views
16

Sto cercando di configurare il mio file Vagrant per avere alcuni attributi di chef, ma devo fare qualcosa di sbagliato perché le ricette dello chef usano i valori predefiniti invece degli attributi che sto cercando di impostare. Qui è la mia sezione di configurazione del mio file vagabondo:Attributi Chef file 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 

È il mio rubino sbagliato o c'è un modo migliore per fare questo?

risposta

21

Sono nuovo di zecca per Vagrant, Ruby, e lo Chef, ma questo è ciò che ha funzionato per me:

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

Mike, tu sei l'uomo! Alcuni esempi avevano i due punti davanti ai nomi delle variabili, e non sono sicuro del perché. Grazie per la soluzione! – Clint

+0

i due punti davanti al nome della variabile sono sintassi ruby ​​per una chiave. – jmontross

+0

@Clint: qualcosa è un simbolo letterale in Ruby, mentre un "qualcosa" è una stringa. Sono due tipi distinti. Lo chef (almeno nella modalità client-server) tratta sia i simboli che le stringhe se utilizzati come chiavi di hash allo stesso modo, in modo che possano essere usati in modo intercambiabile. Se vuoi saperne di più sulla differenza tra stringhe e simboli vai [qui] (http://www.robertsosinski.com/2009/01/11/the-difference-between-ruby-symbols-and-strings/) . –

3

ho recentemente imbattuto in questo stesso problema. Mentre la risposta di Mike non ha risolto il mio problema, probabilmente a causa delle nuove versioni di Vagrant/Chef, mi ha indirizzato nella giusta direzione. Quello che dovevo fare per il server MySQL è il seguente:

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

ha funzionato per me! Grazie. –