Vagrant requiere atributos en roles.json que rompan el proyecto Chef existente

Tengo una @ existenchef-solo proyecto al que estoy tratando de agregarvagrant soporte. Por lo general, uso cuchillo para cocinar estas recetas en servidores EC2 usando Ubuntu 10.04 AMI publicadas por Canonical.

Vagrant requiere que agreguechef_type yjson_class atributos para mi trabajoroles/*.json archivos, así:

{
  "name": "memcached",
  "chef_type": "role",
  "json_class": "Chef::Role",
  "run_list": ["base", "memcached"]
}

Si yo no agregue estos al archivo de definición de roles, luego aparece el siguiente error. Presumiblemente, estos atributos le dicen al chef que trate mi archivo JSON como una instancia de la clase Chef :: Role.

[default] [Thu, 26 May 2011 02:19:44 +0200] DEBUG: NoMethodError: undefined method `run_list_for' for {"name"=>"memcached", "run_list"=>["wantsa", "memcached"]}:Hash
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.0/bin/../lib/chef/run_list/run_list_expansion.rb:139:in `expand_run_list_items'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.0/bin/../lib/chef/run_list/run_list_expansion.rb:78:in `expand'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.0/bin/../lib/chef/run_list.rb:138:in `expand'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.0/bin/../lib/chef/node.rb:437:in `expand!'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.0/bin/../lib/chef/client.rb:249:in `build_node'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.0/bin/../lib/chef/client.rb:151:in `run'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.0/bin/../lib/chef/application/solo.rb:192:in `run_application'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.0/bin/../lib/chef/application/solo.rb:183:in `loop'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.0/bin/../lib/chef/application/solo.rb:183:in `run_application'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.0/bin/../lib/chef/application.rb:66:in `run'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.0/bin/chef-solo:25
/opt/ruby/bin/chef-solo:19:in `load'
/opt/ruby/bin/chef-solo:19

Sin embargo, cuando trato de cocinar el mismo papel en EC2, la existencia dechef_type yjson_class atributos interrumpen el proceso, produciendo el siguiente error. Presumiblemente esto se debe a que en este caso el chef quiere tratar mi definición de rol como un hash Ruby (y llamar a.delete de eso

/usr/lib/ruby/gems/1.8/gems/chef-0.9.16/bin/../lib/chef/node.rb:379:in `consume_run_list': undefined method `delete' for #<Chef::Role:0x7fa337535138> (NoMethodError)
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.16/bin/../lib/chef/node.rb:370:in `consume_attributes'
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.16/bin/../lib/chef/node.rb:358:in `consume_external_attrs'
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.16/bin/../lib/chef/client.rb:222:in `build_node'
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.16/bin/../lib/chef/client.rb:145:in `run'
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.16/bin/../lib/chef/application/solo.rb:190:in `run_application'
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.16/bin/../lib/chef/application/solo.rb:181:in `loop'
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.16/bin/../lib/chef/application/solo.rb:181:in `run_application'
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.16/bin/../lib/chef/application.rb:62:in `run'
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.16/bin/chef-solo:25
    from /usr/bin/chef-solo:19:in `load'
    from /usr/bin/chef-solo:19
rake aborted!

Cuando elimino lachef_type yjson_class mis scripts de cocina EC2 vuelven a funcionar normalmente, pero luego Vagrant se rompe.

La principal diferencia que veo entre mi comando chef-solo y el utilizado por Vagrant es que mi comando chef-solo tiene una relación directa con mi archivo roles.json, mientras que Vagrant está envuelto en eldna.json archivo

Mía

ssh [email protected] "cd /etc/chef; sudo env chef_environment=production chef-solo -l info -c config/solo.rb -j roles/memcached.json "

Vagrants:

cd /tmp/vagrant-chef
chef-solo -c solo.rb -j dna.json

¿Hay alguna forma de configurar mi Vagrantfile para que funcione?

Respuestas a la pregunta(2)

Su respuesta a la pregunta