diff --git a/REFERENCE.md b/REFERENCE.md index 61f3db43..2b9484fa 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -864,6 +864,8 @@ The following parameters are available in the `splunk::forwarder` class: * [`forwarder_homedir`](#-splunk--forwarder--forwarder_homedir) * [`forwarder_confdir`](#-splunk--forwarder--forwarder_confdir) * [`service_name`](#-splunk--forwarder--service_name) +* [`service_ensure`](#-splunk--forwarder--service_ensure) +* [`service_enable`](#-splunk--forwarder--service_enable) * [`service_file`](#-splunk--forwarder--service_file) * [`boot_start`](#-splunk--forwarder--boot_start) * [`use_default_config`](#-splunk--forwarder--use_default_config) @@ -1026,6 +1028,22 @@ The name of the Splunk Forwarder service. Default value: `$splunk::params::forwarder_service` +##### `service_ensure` + +Data type: `Stdlib::Ensure::Service` + +Ensure passed to the splunk service resource. + +Default value: `running` + +##### `service_enable` + +Data type: `String[1]` + +Enable passed to the splunk service resource. + +Default value: `$splunk::params::forwarder_service_enable` + ##### `service_file` Data type: `Stdlib::Absolutepath` diff --git a/manifests/forwarder.pp b/manifests/forwarder.pp index d9ca0876..120eef51 100644 --- a/manifests/forwarder.pp +++ b/manifests/forwarder.pp @@ -68,6 +68,12 @@ # @param service_name # The name of the Splunk Forwarder service. # +# @param service_ensure +# Ensure passed to the splunk service resource. +# +# @param service_enable +# Enable passed to the splunk service resource. +# # @param service_file # The path to the Splunk Forwarder service file. # @@ -172,6 +178,8 @@ Stdlib::Absolutepath $forwarder_homedir = $splunk::params::forwarder_homedir, Stdlib::Absolutepath $forwarder_confdir = $splunk::params::forwarder_confdir, String[1] $service_name = $splunk::params::forwarder_service, + Stdlib::Ensure::Service $service_ensure = running, + String[1] $service_enable = $splunk::params::forwarder_service_enable, Stdlib::Absolutepath $service_file = $splunk::params::forwarder_service_file, Boolean $boot_start = $splunk::params::boot_start, Boolean $use_default_config = true, diff --git a/manifests/forwarder/service.pp b/manifests/forwarder/service.pp index 8d616aeb..db5bbe5f 100644 --- a/manifests/forwarder/service.pp +++ b/manifests/forwarder/service.pp @@ -5,9 +5,10 @@ # class splunk::forwarder::service { service { $splunk::forwarder::service_name: - ensure => running, - enable => true, + ensure => $splunk::forwarder::service_ensure, + enable => $splunk::forwarder::service_enable, hasstatus => true, hasrestart => true, + provider => $facts['service_provider'], } } diff --git a/manifests/params.pp b/manifests/params.pp index 31cdb4d3..a10d7819 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -166,6 +166,7 @@ $enterprise_confdir = "${enterprise_homedir}/etc" $forwarder_install_options = [] $enterprise_install_options = [] + $forwarder_service_enable = 'true' # Systemd not supported until Splunk 7.2.2 if $facts['service_provider'] == 'systemd' and versioncmp($version, '7.2.2') >= 0 { $enterprise_service = 'Splunkd' @@ -198,6 +199,7 @@ $enterprise_confdir = "${enterprise_homedir}/etc" $forwarder_install_options = [] $enterprise_install_options = [] + $forwarder_service_enable = 'true' # Systemd not supported until Splunk 7.2.2 if $facts['service_provider'] == 'systemd' and versioncmp($version, '7.2.2') >= 0 { $enterprise_service = 'Splunkd' @@ -232,6 +234,7 @@ $enterprise_install_options = [] $enterprise_service = 'splunk' $forwarder_service = 'splunk' + $forwarder_service_enable = 'true' $enterprise_service_file = '/etc/rc.d/splunk' $forwarder_service_file = '/etc/rc.d/splunk' $boot_start_args = '' @@ -247,6 +250,7 @@ $forwarder_secret_file = "${forwarder_homedir}\\etc\\auth\\splunk.secret" $enterprise_secret_file = "${enterprise_homedir}\\etc\\auth\\splunk.secret" $forwarder_service = 'SplunkForwarder' + $forwarder_service_enable = 'delayed' $forwarder_service_file = "${forwarder_homedir}\\dummy" # Not used in Windows, but attribute must be defined with a valid path $forwarder_confdir = "${forwarder_homedir}\\etc" $enterprise_src_subdir = 'windows' diff --git a/spec/classes/forwarder_spec.rb b/spec/classes/forwarder_spec.rb index f1f9cd0a..e7c5a416 100644 --- a/spec/classes/forwarder_spec.rb +++ b/spec/classes/forwarder_spec.rb @@ -33,6 +33,7 @@ it { is_expected.to contain_file('C:\\Program Files\\SplunkUniversalForwarder/etc/system/local/props.conf') } it { is_expected.to contain_file('C:\\Program Files\\SplunkUniversalForwarder/etc/system/local/transforms.conf') } it { is_expected.to contain_file('C:\\Program Files\\SplunkUniversalForwarder/etc/system/local/web.conf') } + it { is_expected.to contain_service('SplunkForwarder').with(ensure: 'running', enable: 'delayed', status: nil, restart: nil, start: nil, stop: nil) } it { is_expected.to contain_file('C:\\Program Files\\SplunkUniversalForwarder/etc/system/local/server.conf') } it { is_expected.not_to contain_file('C:\\Program Files\\SplunkUniversalForwarder/etc/auth/splunk.secret') } it { is_expected.not_to contain_file('C:\\Program Files\\SplunkUniversalForwarder/etc/passwd') } @@ -77,6 +78,29 @@ end end + context 'when service_ensure = stopped' do + let(:params) { { 'service_ensure' => 'stopped' } } + + case facts[:kernel] + when 'windows' + it { is_expected.to contain_service('SplunkForwarder').with(ensure: 'stopped', enable: 'delayed', status: nil, restart: nil, start: nil, stop: nil) } + when 'FreeBSD' + it { is_expected.to contain_service('splunk').with(ensure: 'stopped', enable: 'true', status: nil, restart: nil, start: nil, stop: nil) } + else + it { is_expected.to contain_service('SplunkForwarder').with(ensure: 'stopped', enable: 'true', status: nil, restart: nil, start: nil, stop: nil) } + end + end + + context 'when service_enable = false' do + let(:params) { { 'service_enable' => 'false' } } + + if facts[:kernel] == 'FreeBSD' + it { is_expected.to contain_service('splunk').with(ensure: 'running', enable: false, status: nil, restart: nil, start: nil, stop: nil) } + else + it { is_expected.to contain_service('SplunkForwarder').with(ensure: 'running', enable: false, status: nil, restart: nil, start: nil, stop: nil) } + end + end + context 'with $boot_start = true (defaults)' do if facts[:kernel] == 'Linux' || facts[:kernel] == 'SunOS'