Instances of BootstrapContext are the context objects (i.e., self) for bootstrap templates. For backwards compatability, they must set the following instance variables:
@config - a hash of knife’s config values
@run_list - the run list for the node to boostrap
# File lib/chef/knife/core/bootstrap_context.rb, line 45 def bootstrap_environment @chef_config[:environment] || '_default' end
# File lib/chef/knife/core/bootstrap_context.rb, line 37 def bootstrap_version_string if @config[:prerelease] "--prerelease" else "--version #{chef_version}" end end
This function is used by older bootstrap templates other than chef-full and potentially by custom templates as well hence it’s logic needs to be preserved for backwards compatibility reasons until we hit Chef 12.
# File lib/chef/knife/core/bootstrap_context.rb, line 108 def chef_version knife_config[:bootstrap_version] || Chef::VERSION end
# File lib/chef/knife/core/bootstrap_context.rb, line 63 def config_content client_rb = log_location STDOUTchef_server_url "#{@chef_config[:chef_server_url]}"validation_client_name "#{@chef_config[:validation_client_name]}" if @config[:chef_node_name] client_rb << %{node_name "#{@config[:chef_node_name]}"\n} else client_rb << "# Using default node name (fqdn)\n" end if knife_config[:bootstrap_proxy] client_rb << %{http_proxy "#{knife_config[:bootstrap_proxy]}"\n} client_rb << %{https_proxy "#{knife_config[:bootstrap_proxy]}"\n} end if knife_config[:bootstrap_no_proxy] client_rb << %{no_proxy "#{knife_config[:bootstrap_no_proxy]}"\n} end if encrypted_data_bag_secret client_rb << %{encrypted_data_bag_secret "/etc/chef/encrypted_data_bag_secret"\n} end client_rb end
# File lib/chef/knife/core/bootstrap_context.rb, line 53 def encrypted_data_bag_secret knife_config[:secret] || begin if knife_config[:secret_file] && File.exist?(knife_config[:secret_file]) IO.read(File.expand_path(knife_config[:secret_file])) elsif @chef_config[:encrypted_data_bag_secret] && File.exist?(@chef_config[:encrypted_data_bag_secret]) IO.read(File.expand_path(@chef_config[:encrypted_data_bag_secret])) end end end
# File lib/chef/knife/core/bootstrap_context.rb, line 133 def first_boot (@config[:first_boot_attributes] || {}).merge(:run_list => @run_list) end
# File lib/chef/knife/core/bootstrap_context.rb, line 100 def knife_config @chef_config.key?(:knife) ? @chef_config[:knife] : {} end
chef version string to fetch the latest current version from omnitruck If user is on X.Y.Z bootstrap will use the latest X release X here can be 10 or 11
# File lib/chef/knife/core/bootstrap_context.rb, line 116 def latest_current_chef_version_string chef_version_string = if knife_config[:bootstrap_version] knife_config[:bootstrap_version] else Chef::VERSION.split(".").first end installer_version_string = ["-v", chef_version_string] # If bootstrapping a pre-release version add -p to the installer string if chef_version_string.split(".").length > 3 installer_version_string << "-p" end installer_version_string.join(" ") end
# File lib/chef/knife/core/bootstrap_context.rb, line 91 def start_chef # If the user doesn't have a client path configure, let bash use the PATH for what it was designed for client_path = @chef_config[:chef_client_path] || 'chef-client' s = "#{client_path} -j /etc/chef/first-boot.json" s << ' -l debug' if @config[:verbosity] and @config[:verbosity] >= 2 s << " -E #{bootstrap_environment}" if chef_version.to_f != 0.9 # only use the -E option on Chef 0.10+ s end
Generated with the Darkfish Rdoc Generator 2.