2012-04-04 15 views
16

Estoy tratando de configurar mi archivo Vagrant para que tenga algunos atributos de chef, pero debo estar haciendo algo mal porque las recetas del chef usan los valores predeterminados en lugar de los atributos que intento establecer. Aquí está mi sección de configuración de mi archivo vagabundo:File Vagrant Chef Atributos

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 

¿Es mi Rubí mal o hay una mejor manera de hacer esto?

Respuesta

21

estoy totalmente nuevo a Vagrant, Ruby, y el chef, pero esto es lo que funcionó para mí:

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

Mike, eres el hombre! Algunos ejemplos tenían el colon delante de los nombres de las variables, y no estoy seguro de por qué. Gracias por la solución! – Clint

+0

los dos puntos delante del nombre de la variable son la sintaxis de rubí de una clave. – jmontross

+0

@Clint the: algo es un literal de símbolo en Ruby, mientras que un "algo" es una cadena. Son dos tipos distintos. El Chef (al menos en el modo cliente-servidor) trata los símbolos y las cadenas cuando se usan como claves hash de la misma manera, por lo que se pueden usar indistintamente. Si desea leer más sobre la diferencia entre cadenas y símbolos, vaya [aquí] (http://www.robertsosinski.com/2009/01/11/the-difference-between-ruby-symbols-and-strings/) . –

3

poco me encontré con este mismo tema. Si bien la respuesta de Mike no resolvió mi problema, posiblemente debido a las nuevas versiones de Vagrant/Chef, me indicó la dirección correcta. Lo siguiente es lo que tuve que hacer para que el servidor MySQL funcione:

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

¡Trabajó para mí! Gracias. –

Cuestiones relacionadas