diff options
author | danielsdeleo <dan@getchef.com> | 2015-03-31 14:33:19 -0700 |
---|---|---|
committer | danielsdeleo <dan@getchef.com> | 2015-04-01 13:35:01 -0700 |
commit | 8157fdea21c913dfb99ee4f8c285d2d64557d4bc (patch) | |
tree | 3d4d3998276f92411cc61cac8135befd3de714e2 /lib/chef | |
parent | f066fef19be99ba1b857ecaaabc4c70c9201f1d4 (diff) | |
download | chef-8157fdea21c913dfb99ee4f8c285d2d64557d4bc.tar.gz |
Add --no-listen option to disable zero binding to port
Diffstat (limited to 'lib/chef')
-rw-r--r-- | lib/chef/application/client.rb | 5 | ||||
-rw-r--r-- | lib/chef/application/knife.rb | 6 | ||||
-rw-r--r-- | lib/chef/config.rb | 8 | ||||
-rw-r--r-- | lib/chef/http.rb | 1 | ||||
-rw-r--r-- | lib/chef/knife.rb | 3 | ||||
-rw-r--r-- | lib/chef/local_mode.rb | 6 |
6 files changed, 27 insertions, 2 deletions
diff --git a/lib/chef/application/client.rb b/lib/chef/application/client.rb index 9984ad5b9d..a5faee9d35 100644 --- a/lib/chef/application/client.rb +++ b/lib/chef/application/client.rb @@ -258,6 +258,11 @@ class Chef::Application::Client < Chef::Application :description => "Only run the bare minimum ohai plugins chef needs to function", :boolean => true + option :listen, + :long => "--[no-]listen", + :description => "Whether a local mode (-z) server binds to a port", + :boolean => true + IMMEDIATE_RUN_SIGNAL = "1".freeze attr_reader :chef_client_json diff --git a/lib/chef/application/knife.rb b/lib/chef/application/knife.rb index 1a19a45598..af5216ae00 100644 --- a/lib/chef/application/knife.rb +++ b/lib/chef/application/knife.rb @@ -121,6 +121,11 @@ class Chef::Application::Knife < Chef::Application :long => "--chef-zero-port PORT", :description => "Port (or port range) to start chef-zero on. Port ranges like 1000,1010 or 8889-9999 will try all given ports until one works." + option :listen, + :long => "--[no-]listen", + :description => "Whether a local mode (-z) server binds to a port", + :boolean => true + option :version, :short => "-v", :long => "--version", @@ -129,7 +134,6 @@ class Chef::Application::Knife < Chef::Application :proc => lambda {|v| puts "Chef: #{::Chef::VERSION}"}, :exit => 0 - # Run knife def run Mixlib::Log::Formatter.show_time = false diff --git a/lib/chef/config.rb b/lib/chef/config.rb index b897f9fdbd..25557b077f 100644 --- a/lib/chef/config.rb +++ b/lib/chef/config.rb @@ -305,6 +305,14 @@ class Chef default :pid_file, nil + # Whether Chef Zero local mode should bind to a port. All internal requests + # will go through the socketless code path regardless, so the socket is + # only needed if other processes will connect to the local mode server. + # + # For compatibility this is set to true but it will be changed to false in + # the future. + default :listen, true + config_context :chef_zero do config_strict_mode true default(:enabled) { Chef::Config.local_mode } diff --git a/lib/chef/http.rb b/lib/chef/http.rb index bfdc2b5e42..16a826a3db 100644 --- a/lib/chef/http.rb +++ b/lib/chef/http.rb @@ -25,6 +25,7 @@ require 'tempfile' require 'net/https' require 'uri' require 'chef/http/basic_client' +require 'chef/http/socketless_chef_zero_client' require 'chef/monkey_patches/net_http' require 'chef/config' require 'chef/platform/query_helpers' diff --git a/lib/chef/knife.rb b/lib/chef/knife.rb index e13f80b5a8..2e0694aebc 100644 --- a/lib/chef/knife.rb +++ b/lib/chef/knife.rb @@ -373,6 +373,9 @@ class Chef Chef::Config[:environment] = config[:environment] if config[:environment] Chef::Config.local_mode = config[:local_mode] if config.has_key?(:local_mode) + + Chef::Config.listen = config[:listen] if config.has_key?(:listen) + if Chef::Config.local_mode && !Chef::Config.has_key?(:cookbook_path) && !Chef::Config.has_key?(:chef_repo_path) Chef::Config.chef_repo_path = Chef::Config.find_chef_repo_path(Dir.pwd) end diff --git a/lib/chef/local_mode.rb b/lib/chef/local_mode.rb index c6c5685e3f..79fb750dd8 100644 --- a/lib/chef/local_mode.rb +++ b/lib/chef/local_mode.rb @@ -65,7 +65,11 @@ class Chef server_options[:port] = parse_port(Chef::Config.chef_zero.port) @chef_zero_server = ChefZero::Server.new(server_options) - @chef_zero_server.start_background + if Chef::Config[:listen] + @chef_zero_server.start_background + else + @chef_zero_server.start_socketless + end local_mode_url = @chef_zero_server.local_mode_url |