lib/chef/provisioning/convergence_strategy/install_sh.rb in chef-provisioning-0.18 vs lib/chef/provisioning/convergence_strategy/install_sh.rb in chef-provisioning-0.19
- old
+ new
@@ -11,28 +11,41 @@
convergence_options = Cheffish::MergedConfig.new(convergence_options, {
:client_rb_path => '/etc/chef/client.rb',
:client_pem_path => '/etc/chef/client.pem'
})
super(convergence_options, config)
- @install_sh_url = convergence_options[:install_sh_url] || 'http://www.chef.io/chef/install.sh'
+ @install_sh_url = convergence_options[:install_sh_url] || 'https://www.chef.io/chef/install.sh'
@install_sh_path = convergence_options[:install_sh_path] || '/tmp/chef-install.sh'
- @bootstrap_env = convergence_options[:bootstrap_proxy] ? "http_proxy=#{convergence_options[:bootstrap_proxy]}" : ""
+ @chef_version = convergence_options[:chef_version]
+ @prerelease = convergence_options[:prerelease]
+ @install_sh_arguments = convergence_options[:install_sh_arguments]
+ @bootstrap_env = convergence_options[:bootstrap_proxy] ? "http_proxy=#{convergence_options[:bootstrap_proxy]} https_proxy=$http_proxy " : ""
@chef_client_timeout = convergence_options.has_key?(:chef_client_timeout) ? convergence_options[:chef_client_timeout] : 120*60 # Default: 2 hours
end
+ attr_reader :chef_version
+ attr_reader :prerelease
attr_reader :install_sh_url
attr_reader :install_sh_path
+ attr_reader :install_sh_arguments
attr_reader :bootstrap_env
+ def install_sh_command_line
+ arguments = install_sh_arguments ? " #{install_sh_arguments}" : ""
+ arguments << " -v #{chef_version}" if chef_version
+ arguments << " -p" if prerelease
+ "bash -c '#{bootstrap_env} bash #{install_sh_path}#{arguments}'"
+ end
+
def setup_convergence(action_handler, machine)
super
# Install chef-client. TODO check and update version if not latest / not desired
if machine.execute_always('chef-client -v').exitstatus != 0
# TODO ssh verification of install.sh before running arbtrary code would be nice?
@@install_sh_cache[install_sh_url] ||= Net::HTTP.get(URI(install_sh_url))
machine.write_file(action_handler, install_sh_path, @@install_sh_cache[install_sh_url], :ensure_dir => true)
- machine.execute(action_handler, "bash -c '#{bootstrap_env} bash #{install_sh_path}'")
+ machine.execute(action_handler, install_sh_command_line)
end
end
def converge(action_handler, machine)
super