diff --git a/plugins/provisioners/chef/config/base.rb b/plugins/provisioners/chef/config/base.rb index 71d8a50e8..1ee8bca0a 100644 --- a/plugins/provisioners/chef/config/base.rb +++ b/plugins/provisioners/chef/config/base.rb @@ -15,23 +15,51 @@ module VagrantPlugins # @return [String] attr_accessor :binary_env + # Install Chef on the system if it does not exist. Default is true. + # This is a trinary attribute (it can have three values): + # + # - true (bool) install Chef + # - false (bool) do not install Chef + # - "force" (string) install Chef, even if it is already installed at + # the proper version + # + # @return [true, false, String] + attr_accessor :install + # The Chef log level. See the Chef docs for acceptable values. # @return [String, Symbol] attr_accessor :log_level + # The version of Chef to install. If Chef is already installed on the + # system, the installed version is compared with the requested version. + # If they match, no action is taken. If they do not match, version of + # the value specified in this attribute will be installed over top of + # the existing version (a warning will be displayed). + # + # You can also specify "latest" (default), which will install the latest + # version of Chef on the system. In this case, Chef will use whatever + # version is on the system. To force the newest version of Chef to be + # installed on every provision, set the {#install} option to "force". + # + # @return [String] + attr_accessor :version def initialize super @binary_path = UNSET_VALUE @binary_env = UNSET_VALUE + @install = UNSET_VALUE @log_level = UNSET_VALUE + @version = UNSET_VALUE end def finalize! @binary_path = nil if @binary_path == UNSET_VALUE @binary_env = nil if @binary_env == UNSET_VALUE + @install = true if @install == UNSET_VALUE @log_level = :info if @log_level == UNSET_VALUE + @version = :latest if @version == UNSET_VALUE # Make sure the version is a symbol if it's not a boolean if @version.respond_to?(:to_sym)