diff --git a/.fixtures.yml b/.fixtures.yml index 86570f89..02c2eb77 100644 --- a/.fixtures.yml +++ b/.fixtures.yml @@ -5,3 +5,4 @@ fixtures: logrotate: "puppet/logrotate" rsyslog: "saz/rsyslog" stdlib: "puppetlabs/stdlib" + systemd: "camptocamp/systemd" diff --git a/manifests/radsniff.pp b/manifests/radsniff.pp index 21837064..52c1c3b1 100644 --- a/manifests/radsniff.pp +++ b/manifests/radsniff.pp @@ -16,8 +16,8 @@ if $envfile { $final_envfile = $envfile } else { - if $freeradius::fr_radsniff_envfile { - $final_envfile = $freeradius::fr_radsniff_envfile + if $freeradius::radsniff::fr_radsniff_envfile { + $final_envfile = $freeradius::radsniff::fr_radsniff_envfile } else { fail('freeradius::radsniff requires envfile to be explicitly set on this OS') } @@ -27,8 +27,8 @@ if $pidfile { $final_pidfile = $pidfile } else { - if $freeradius::fr_radsniff_pidfile { - $final_pidfile = $freeradius::fr_radsniff_pidfile + if $freeradius::radsniff::fr_radsniff_pidfile { + $final_pidfile = $freeradius::radsniff::fr_radsniff_pidfile } else { fail('freeradius::radsniff requires pidfile to be explicitly set on this OS') } @@ -36,7 +36,7 @@ $escaped_cmd = $options.regsubst('"','\\\\"','G') - file { $envfile: + file { $final_envfile: content => @("SYSCONFIG"), RADSNIFF_OPTIONS="${escaped_cmd}" | SYSCONFIG @@ -51,7 +51,7 @@ } systemd::unit_file {'radsniff.service': - source => 'puppet:///modules/freeradius/radsniff.service', - notify => Service['radsniff'], + content => template('freeradius/radsniff.service.erb'), + notify => Service['radsniff'], } } diff --git a/spec/classes/radsniff.rb b/spec/classes/radsniff_spec.rb similarity index 67% rename from spec/classes/radsniff.rb rename to spec/classes/radsniff_spec.rb index bff7f05e..5687907b 100644 --- a/spec/classes/radsniff.rb +++ b/spec/classes/radsniff_spec.rb @@ -2,9 +2,9 @@ describe 'freeradius::radsniff' do on_supported_os.each do |os, os_facts| - context "on #{os}" do - include_context 'freeradius_with_utils' + include_context 'freeradius_with_utils' + context "on #{os}" do let(:facts) { os_facts } let(:params) do @@ -13,6 +13,34 @@ } end + let(:pre_condition) do + precondition = case os_facts[:osfamily] + when 'RedHat' + 'class freeradius::params { + $fr_basepath = "/etc/raddb" + $fr_radsniff_pidfile = "/var/run/radiusd/radsniff.pid" + $fr_radsniff_envfile = "/etc/sysconfig/radsniff" + } + include freeradius::params' + when 'Debian' + 'class freeradius::params { + $fr_basepath = "/etc/freeradius" + $fr_radsniff_pidfile = "/var/run/freeradius/radsniff.pid" + $fr_radsniff_envfile = "/etc/defaults/radsniff" + } + include freeradius::params' + else + 'class freeradius::params { + $fr_basepath = "/etc/raddb" + $fr_radsniff_pidfile = "/var/run/radiusd/radsniff.pid" + $fr_radsniff_envfile = undef + } + include freeradius::params' + end + + super().push(precondition) + end + if os_facts[:osfamily] =~ %r{^RedHat|Debian$} it do is_expected.to contain_service('radsniff') @@ -34,7 +62,7 @@ is_expected.to contain_systemd__unit_file('radsniff.service') .with_content(%r{^Pidfile=/var/run/radiusd/radsniff.pid$}) .with_content(%r{^EnvironmentFile=/etc/sysconfig/radsniff$}) - .with_content(%r{^ExecStart=/usr/bin/radsniff -P /var/run/radiusd/radsniff.pid -d /etc/raddb $RADSNIFF_OPTIONS$}) + .with_content(%r{^ExecStart=/usr/bin/radsniff -P /var/run/radiusd/radsniff.pid -d /etc/raddb \$RADSNIFF_OPTIONS$}) .that_notifies('Service[radsniff]') end when 'Debian' @@ -49,7 +77,7 @@ is_expected.to contain_systemd__unit_file('radsniff.service') .with_content(%r{^Pidfile=/var/run/freeradius/radsniff.pid$}) .with_content(%r{^EnvironmentFile=/etc/defaults/radsniff$}) - .with_content(%r{^ExecStart=/usr/bin/radsniff -P /var/run/freeradius/radsniff.pid -d /etc/freeradius $RADSNIFF_OPTIONS$}) + .with_content(%r{^ExecStart=/usr/bin/radsniff -P /var/run/freeradius/radsniff.pid -d /etc/freeradius \$RADSNIFF_OPTIONS$}) .that_notifies('Service[radsniff]') end else @@ -86,7 +114,7 @@ is_expected.to contain_systemd__unit_file('radsniff.service') .with_content(%r{^Pidfile=/a/pid/file$}) .with_content(%r{^EnvironmentFile=/test/env/file$}) - .with_content(%r{^ExecStart=/usr/bin/radsniff -P /a/pid/file -d /etc/freeradius $RADSNIFF_OPTIONS$}) + .with_content(%r{^ExecStart=/usr/bin/radsniff -P /a/pid/file -d .* \$RADSNIFF_OPTIONS$}) .that_notifies('Service[radsniff]') end end diff --git a/spec/spec_helper_local.rb b/spec/spec_helper_local.rb index 1377bcfa..f66ce653 100644 --- a/spec/spec_helper_local.rb +++ b/spec/spec_helper_local.rb @@ -57,10 +57,12 @@ shared_context 'freeradius_with_utils' do let(:pre_condition) do [ - redhat_params_class, - 'class { freeradius: - utils_support => true, - }', + 'class freeradius { + $utils_support = true + } + include freeradius + + package { "freeradius-utils": }', ] end end diff --git a/templates/radsniff.service.erb b/templates/radsniff.service.erb index 93fe7dfd..baf50dc8 100644 --- a/templates/radsniff.service.erb +++ b/templates/radsniff.service.erb @@ -6,8 +6,8 @@ After=radiusd.target [Service] Type=forking Pidfile=<%=scope['::freeradius::radsniff::final_pidfile']%> -EnvironmentFile=<%=scope['::freeradius::radsniff::final_envpath']%> -ExecStart=/usr/bin/radsniff -P <%=scope['::freeradius::radsniff::pidpath']%> -d <%=scope['::freeradius::radsniff::fr_basepath']%> $RADSNIFF_OPTIONS +EnvironmentFile=<%=scope['::freeradius::radsniff::final_envfile']%> +ExecStart=/usr/bin/radsniff -P <%=scope['::freeradius::radsniff::final_pidfile']%> -d <%=scope['::freeradius::radsniff::fr_basepath']%> $RADSNIFF_OPTIONS [Install] WantedBy=multi-user.target