summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarkgibbons <mark.gibbons@nordstrom.com>2019-05-08 15:35:07 -0700
committerTim Smith <tsmith@chef.io>2019-05-29 14:15:36 -0700
commitd78f7da1d0e0852520db7103346eebae23ec42d5 (patch)
tree98af847135499bbecd307830554b8d49faf45865
parent6a613c538b386f72f66548523a8f9400207d2a95 (diff)
downloadchef-backport_10.tar.gz
Use exports compatibile with /bin/sh in the bootstrap scriptbackport_10
The bootstrap script is explicitly using /bin/sh. On some solaris servers the version of /bin/sh exporting environment variables using "export id=value" fails. The form "id=value export id" does work. Bootstrap fails when the wrong form is used. Signed-off-by: markgibbons <mark.gibbons@nordstrom.com>
-rw-r--r--lib/chef/knife/bootstrap/templates/chef-full.erb3
-rw-r--r--spec/unit/knife/bootstrap_spec.rb22
2 files changed, 24 insertions, 1 deletions
diff --git a/lib/chef/knife/bootstrap/templates/chef-full.erb b/lib/chef/knife/bootstrap/templates/chef-full.erb
index 094cca1c08..35699ef6f5 100644
--- a/lib/chef/knife/bootstrap/templates/chef-full.erb
+++ b/lib/chef/knife/bootstrap/templates/chef-full.erb
@@ -1,5 +1,6 @@
sh -c '
-<%= "export https_proxy=\"#{knife_config[:bootstrap_proxy]}\"" if knife_config[:bootstrap_proxy] -%>
+<%= "https_proxy=\"#{knife_config[:bootstrap_proxy]}\" export https_proxy" if knife_config[:bootstrap_proxy] %>
+<%= "no_proxy=\"#{knife_config[:bootstrap_no_proxy]}\" export no_proxy" if knife_config[:bootstrap_no_proxy] %>
if test "x$TMPDIR" = "x"; then
tmp="/tmp"
diff --git a/spec/unit/knife/bootstrap_spec.rb b/spec/unit/knife/bootstrap_spec.rb
index 258d193cf1..76b9d49a8c 100644
--- a/spec/unit/knife/bootstrap_spec.rb
+++ b/spec/unit/knife/bootstrap_spec.rb
@@ -96,6 +96,28 @@ describe Chef::Knife::Bootstrap do
end
end
+ context "with --bootstrap-proxy" do
+ let(:bootstrap_cli_options) { [ "--bootstrap-proxy", "1.1.1.1" ] }
+ let(:rendered_template) do
+ knife.merge_configs
+ knife.render_template
+ end
+ it "configures the https_proxy environment variable in the bootstrap template correctly" do
+ expect(rendered_template).to match(%r{https_proxy="1.1.1.1" export https_proxy})
+ end
+ end
+
+ context "with --bootstrap-no-proxy" do
+ let(:bootstrap_cli_options) { [ "--bootstrap-no-proxy", "localserver" ] }
+ let(:rendered_template) do
+ knife.merge_configs
+ knife.render_template
+ end
+ it "configures the https_proxy environment variable in the bootstrap template correctly" do
+ expect(rendered_template).to match(%r{no_proxy="localserver" export no_proxy})
+ end
+ end
+
context "with :bootstrap_template and :template_file cli options" do
let(:bootstrap_cli_options) { [ "--bootstrap-template", "my-template", "other-template" ] }