I'm trying to learn chef and following the documentation for chef-solo found here https://docs.chef.io/chef_solo.html
When running chef-solo with the following environment:
name "dev"
description "Development Environment"
cookbook "vim-tutorial"
I get the following stacktrace:
ArgumentError: wrong number of arguments (1 for 2) /opt/chefdk/embedded/apps/chef/lib/chef/environment.rb:107:in
cookbook' /Users/barleyj/.chef/chef-solo/environments/dev.rb:3:infrom_file' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/from_file.rb:30:ininstance_eval' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/from_file.rb:30:infrom_file' /opt/chefdk/embedded/apps/chef/lib/chef/environment.rb:261:inload_from_file' /opt/chefdk/embedded/apps/chef/lib/chef/environment.rb:241:inload' /opt/chefdk/embedded/apps/chef/lib/chef/node.rb:380:inapply_expansion_attributes' /opt/chefdk/embedded/apps/chef/lib/chef/node.rb:369:inexpand!' /opt/chefdk/embedded/apps/chef/lib/chef/policy_builder/expand_node_object.rb:135:inexpand_run_list' /opt/chefdk/embedded/apps/chef/lib/chef/policy_builder/expand_node_object.rb:122:inbuild_node' /opt/chefdk/embedded/apps/chef/lib/chef/client.rb:259:inbuild_node' /opt/chefdk/embedded/apps/chef/lib/chef/client.rb:420:indo_run' /opt/chefdk/embedded/apps/chef/lib/chef/client.rb:213:inblock in run' /opt/chefdk/embedded/apps/chef/lib/chef/client.rb:207:infork' /opt/chefdk/embedded/apps/chef/lib/chef/client.rb:207:inrun' /opt/chefdk/embedded/apps/chef/lib/chef/application.rb:236:inrun_chef_client' /opt/chefdk/embedded/apps/chef/lib/chef/application/solo.rb:226:inblock in run_application' /opt/chefdk/embedded/apps/chef/lib/chef/application/solo.rb:218:inloop' /opt/chefdk/embedded/apps/chef/lib/chef/application/solo.rb:218:inrun_application' /opt/chefdk/embedded/apps/chef/lib/chef/application.rb:55:inrun' /opt/chefdk/embedded/apps/chef/bin/chef-solo:25:in<top (required)>' /usr/bin/chef-solo:33:inload' /usr/bin/chef-solo:33:in `'
This makes sense when I look at the source code in environment.rb. The cookbook method only accepts 2 arguments.
If I add a version to the environment file:
name "dev"
description "Development Environment"
cookbook "vim-tutorial", "= 0.1.0"
Chef::Exceptions::IllegalVersionConstraint: Environment cookbook version constraints not allowed in chef-solo /opt/chefdk/embedded/apps/chef/lib/chef/environment.rb:306:in
validate_cookbook_version' /opt/chefdk/embedded/apps/chef/lib/chef/environment.rb:112:inblock in cookbook' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/params_validate.rb:224:incall' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/params_validate.rb:224:inblock in _pv_callbacks' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/params_validate.rb:223:ineach' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/params_validate.rb:223:in_pv_callbacks' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/params_validate.rb:70:inblock (2 levels) in validate' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/params_validate.rb:67:ineach' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/params_validate.rb:67:inblock in validate' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/params_validate.rb:57:ineach' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/params_validate.rb:57:invalidate' /opt/chefdk/embedded/apps/chef/lib/chef/environment.rb:108:incookbook' /Users/barleyj/.chef/chef-solo/environments/dev.rb:3:infrom_file' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/from_file.rb:30:ininstance_eval' /opt/chefdk/embedded/apps/chef/lib/chef/mixin/from_file.rb:30:infrom_file' /opt/chefdk/embedded/apps/chef/lib/chef/environment.rb:261:inload_from_file' /opt/chefdk/embedded/apps/chef/lib/chef/environment.rb:241:inload' /opt/chefdk/embedded/apps/chef/lib/chef/node.rb:380:inapply_expansion_attributes' /opt/chefdk/embedded/apps/chef/lib/chef/node.rb:369:inexpand!' /opt/chefdk/embedded/apps/chef/lib/chef/policy_builder/expand_node_object.rb:135:inexpand_run_list' /opt/chefdk/embedded/apps/chef/lib/chef/policy_builder/expand_node_object.rb:122:inbuild_node' /opt/chefdk/embedded/apps/chef/lib/chef/client.rb:259:inbuild_node' /opt/chefdk/embedded/apps/chef/lib/chef/client.rb:420:indo_run' /opt/chefdk/embedded/apps/chef/lib/chef/client.rb:213:inblock in run' /opt/chefdk/embedded/apps/chef/lib/chef/client.rb:207:infork' /opt/chefdk/embedded/apps/chef/lib/chef/client.rb:207:inrun' /opt/chefdk/embedded/apps/chef/lib/chef/application.rb:236:inrun_chef_client' /opt/chefdk/embedded/apps/chef/lib/chef/application/solo.rb:226:inblock in run_application' /opt/chefdk/embedded/apps/chef/lib/chef/application/solo.rb:218:inloop' /opt/chefdk/embedded/apps/chef/lib/chef/application/solo.rb:218:inrun_application' /opt/chefdk/embedded/apps/chef/lib/chef/application.rb:55:inrun' /opt/chefdk/embedded/apps/chef/bin/chef-solo:25:in' /usr/bin/chef-solo:33:inload' /usr/bin/chef-solo:33:in'
This also makes sense when I look at the source code because it doesn't allow for version constraints. So how do I install a recipe or cookbook without having a chef server?