diff --git a/manifests/server/config.pp b/manifests/server/config.pp index 92df2e0c..fcf4f016 100644 --- a/manifests/server/config.pp +++ b/manifests/server/config.pp @@ -119,15 +119,16 @@ value => $slapd_ldap_urls, } } - if versioncmp($facts['os']['release']['major'], '8') >= 0 { - systemd::dropin_file { 'puppet.conf': - unit => "${openldap::server::service}.service", - content => join([ - '[Service]', - 'EnvironmentFile=/etc/sysconfig/slapd', - 'ExecStart=', - "ExecStart=/usr/sbin/slapd -u ${openldap::server::owner} -h \${SLAPD_URLS} \$SLAPD_OPTIONS", - ], "\n"), + if versioncmp($facts['os']['release']['major'], '8') >= 0 and $openldap::server::package == 'openldap-servers' { + systemd::manage_dropin { 'puppet.conf': + unit => "${openldap::server::service}.service", + service_entry => { + 'EnvironmentFile' => '/etc/sysconfig/slapd', + 'ExecStart' => [ + '', + "/usr/sbin/slapd -u ${openldap::server::owner} -h \${SLAPD_URLS} \$SLAPD_OPTIONS", + ], + }, } } } diff --git a/spec/classes/openldap_server_config_spec.rb b/spec/classes/openldap_server_config_spec.rb index 3db71ada..f53a50af 100644 --- a/spec/classes/openldap_server_config_spec.rb +++ b/spec/classes/openldap_server_config_spec.rb @@ -15,6 +15,12 @@ it { is_expected.not_to contain_openldap__globalconf('TLSCertificateFile') } it { is_expected.not_to contain_openldap__globalconf('TLSCertificateKeyFile') } it { is_expected.not_to contain_openldap__globalconf('TLSCACertificateFile') } + + if (facts[:os]['family'] == 'RedHat') && (facts[:os]['release']['major'].to_i >= 8) + it { is_expected.to contain_systemd__dropin_file('puppet.conf') } + else + it { is_expected.not_to contain_systemd__dropin_file('puppet.conf') } + end end end @@ -35,5 +41,21 @@ it { is_expected.to contain_shellvar('krb5_client_ktname').with(value: '/etc/krb5.keytab') } end end + + context "on #{os} with nonstandard package" do + let(:facts) do + facts + end + + let(:pre_condition) do + "class {'openldap::server': package => 'some-openldap-clone', }" + end + + context 'with some-openldap-clone' do + it { is_expected.to compile.with_all_deps } + it { is_expected.to contain_class('openldap::server::config') } + it { is_expected.not_to contain_systemd__dropin_file('puppet.conf') } + end + end end end