From 13ce59903181d4cef8000072fdf45ae3a32d0489 Mon Sep 17 00:00:00 2001 From: Justin Kufro Date: Thu, 8 Aug 2019 09:24:52 -0400 Subject: [PATCH 1/2] add admin server options --- manifests/init.pp | 5 +++++ manifests/params.pp | 7 +++++++ spec/classes/config_spec.rb | 27 +++++++++++++++++++++++++++ templates/conf/zoo.cfg.erb | 11 +++++++++++ 4 files changed, 50 insertions(+) diff --git a/manifests/init.pp b/manifests/init.pp index 98f958a..3b725c0 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -92,6 +92,11 @@ Boolean $use_ticket_cache = $::zookeeper::params::use_ticket_cache, Boolean $remove_host_principal = $::zookeeper::params::remove_host_principal, Boolean $remove_realm_principal = $::zookeeper::params::remove_realm_principal, + Boolean $admin_enable_server = $::zookeeper::params::admin_enable_server, + String $admin_server_address = $::zookeeper::params::admin_server_address, + Integer $admin_server_port = $::zookeeper::params::admin_server_port, + Integer $admin_idle_timeout = $::zookeeper::params::admin_idle_timeout, + String $admin_command_url = $::zookeeper::params::admin_command_url, ) inherits ::zookeeper::params { if $pid_file { diff --git a/manifests/params.pp b/manifests/params.pp index 440dde5..fc28196 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -155,4 +155,11 @@ $use_ticket_cache = false $remove_host_principal = false $remove_realm_principal = false + + # admin server options + $admin_enable_server = true + $admin_server_address = '0.0.0.0' + $admin_server_port = 8080 + $admin_idle_timeout = 30000 + $admin_command_url = '/commands' } diff --git a/spec/classes/config_spec.rb b/spec/classes/config_spec.rb index f719884..afb8d2e 100644 --- a/spec/classes/config_spec.rb +++ b/spec/classes/config_spec.rb @@ -87,6 +87,33 @@ end end + context 'admin server options' do + enable = false + port = '3000' + url = '/alternative' + let :pre_condition do + "class {'zookeeper': + admin_enable_server => #{enable}, + admin_server_port => #{port}, + admin_command_url => '#{url}' + }" + end + + it do + is_expected.to contain_file( + '/etc/zookeeper/conf/zoo.cfg' + ).with_content(/admin.enableServer=#{enable}/) + + is_expected.to contain_file( + '/etc/zookeeper/conf/zoo.cfg' + ).with_content(/admin.serverPort=#{port}/) + + is_expected.to contain_file( + '/etc/zookeeper/conf/zoo.cfg' + ).with_content(/admin.commandURL=#{url}/) + end + end + context 'install from archive' do let :pre_condition do 'class {"zookeeper": diff --git a/templates/conf/zoo.cfg.erb b/templates/conf/zoo.cfg.erb index d0c3738..81fdb0f 100644 --- a/templates/conf/zoo.cfg.erb +++ b/templates/conf/zoo.cfg.erb @@ -26,6 +26,17 @@ clientPortAddress=<%= scope.lookupvar("zookeeper::client_ip") %> #clientPortAddress= <% end -%> +# Set to "false" to disable the AdminServer. By default the AdminServer is enabled. +admin.enableServer=<%= scope.lookupvar('zookeeper::admin_enable_server') %> +# The address the embedded Jetty server listens on. Defaults to 0.0.0.0. +admin.serverAddress=<%= scope.lookupvar('zookeeper::admin_server_address') %> +# The port the embedded Jetty server listens on. Defaults to 8080. +admin.serverPort=<%= scope.lookupvar('zookeeper::admin_server_port') %> +# Set the maximum idle time in milliseconds that a connection can wait before sending or receiving data. Defaults to 30000 ms. +admin.idleTimeout=<%= scope.lookupvar('zookeeper::admin_idle_timeout') %> +# The URL for listing and issuing commands relative to the root URL. Defaults to "/commands". +admin.commandURL=<%= scope.lookupvar('zookeeper::admin_command_url') %> + # specify all zookeeper servers # The first port is used by followers to connect to the leader # The second one is used for leader election From 2edbc9f8a44e02f128a124dae3f4d43ed5ba2dc0 Mon Sep 17 00:00:00 2001 From: Justin Kufro Date: Mon, 12 Aug 2019 11:16:36 -0400 Subject: [PATCH 2/2] do not include admin server options in config if version < 3.5.5 --- manifests/config.pp | 1 + spec/classes/config_spec.rb | 29 +++++++++++++++++++++++++++++ templates/conf/zoo.cfg.erb | 2 ++ 3 files changed, 32 insertions(+) diff --git a/manifests/config.pp b/manifests/config.pp index 7c06936..45e3f36 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -40,6 +40,7 @@ } if $::zookeeper::service_provider != 'exhibitor' { + $enable_admin_server = versioncmp($::zookeeper::archive_version, '3.5.5') >= 0 file { "${::zookeeper::cfg_dir}/zoo.cfg": owner => $::zookeeper::user, group => $::zookeeper::group, diff --git a/spec/classes/config_spec.rb b/spec/classes/config_spec.rb index d29c10c..6a7ea4b 100644 --- a/spec/classes/config_spec.rb +++ b/spec/classes/config_spec.rb @@ -93,6 +93,7 @@ url = '/alternative' let :pre_condition do "class {'zookeeper': + archive_version => '3.5.5', admin_enable_server => #{enable}, admin_server_port => #{port}, admin_command_url => '#{url}' @@ -114,6 +115,34 @@ end end + context 'admin server disables if version < 3.5.5' do + enable = false + port = '3000' + url = '/alternative' + let :pre_condition do + "class {'zookeeper': + archive_version => '3.5.4', + admin_enable_server => #{enable}, + admin_server_port => #{port}, + admin_command_url => '#{url}' + }" + end + + it do + is_expected.to contain_file( + '/etc/zookeeper/conf/zoo.cfg' + ).without_content(/admin.enableServer=#{enable}/) + + is_expected.to contain_file( + '/etc/zookeeper/conf/zoo.cfg' + ).without_content(/admin.serverPort=#{port}/) + + is_expected.to contain_file( + '/etc/zookeeper/conf/zoo.cfg' + ).without_content(/admin.commandURL=#{url}/) + end + end + context 'install from archive' do let :pre_condition do 'class {"zookeeper": diff --git a/templates/conf/zoo.cfg.erb b/templates/conf/zoo.cfg.erb index 1760e56..bd9a9da 100644 --- a/templates/conf/zoo.cfg.erb +++ b/templates/conf/zoo.cfg.erb @@ -28,6 +28,7 @@ clientPortAddress=<%= scope.lookupvar("zookeeper::client_ip") %> #clientPortAddress= <% end -%> +<% if @enable_admin_server -%> # Set to "false" to disable the AdminServer. By default the AdminServer is enabled. admin.enableServer=<%= scope.lookupvar('zookeeper::admin_enable_server') %> # The address the embedded Jetty server listens on. Defaults to 0.0.0.0. @@ -38,6 +39,7 @@ admin.serverPort=<%= scope.lookupvar('zookeeper::admin_server_port') %> admin.idleTimeout=<%= scope.lookupvar('zookeeper::admin_idle_timeout') %> # The URL for listing and issuing commands relative to the root URL. Defaults to "/commands". admin.commandURL=<%= scope.lookupvar('zookeeper::admin_command_url') %> +<% end -%> # specify all zookeeper servers # The first port is used by followers to connect to the leader