From 55a3166ce98daa5537bbcd151fec8b36ae6b26d9 Mon Sep 17 00:00:00 2001 From: Helen Campbell Date: Mon, 22 Feb 2016 15:53:51 +0000 Subject: [PATCH] Work for SLES 12 compatibility --- README.markdown | 4 ++++ manifests/config.pp | 7 +++++++ manifests/init.pp | 1 + manifests/params.pp | 15 +++++++++++++++ manifests/service.pp | 1 + spec/classes/ntp_spec.rb | 29 +++++++++++++++-------------- 6 files changed, 43 insertions(+), 14 deletions(-) diff --git a/README.markdown b/README.markdown index 50920b68..00939c5b 100644 --- a/README.markdown +++ b/README.markdown @@ -302,6 +302,10 @@ Tells Puppet whether to manage the NTP service. Valid options: 'true' or 'false' Tells Puppet what NTP service to manage. Valid options: string. Default value: varies by operating system +####`service_provider` + +Tells Puppet which service provider to use for NTP. Valid options: string. Default value: 'undef' + ####`stepout` Tells puppet to change stepout. Applies only if `tinker` value is 'true'. Valid options: unsigned shortint digit. Default value: undef. diff --git a/manifests/config.pp b/manifests/config.pp index e57dff94..77d1922e 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -1,6 +1,13 @@ # Private Class class ntp::config inherits ntp { + #The servers-netconfig file overrides NTP config on SLES 12, interfering with our configuration. + if $::operatingsystem == 'SLES' and $::operatingsystemmajrelease == '12' { + file { '/var/run/ntp/servers-netconfig': + ensure => 'absent' + } + } + if $ntp::keys_enable { case $ntp::config_dir { '/', '/etc', undef: {} diff --git a/manifests/init.pp b/manifests/init.pp index f70e3d65..8c51902e 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -34,6 +34,7 @@ $service_ensure = $ntp::params::service_ensure, $service_manage = $ntp::params::service_manage, $service_name = $ntp::params::service_name, + $service_provider = $ntp::params::service_provider, $stepout = $ntp::params::stepout, $tinker = $ntp::params::tinker, $tos = $ntp::params::tos, diff --git a/manifests/params.pp b/manifests/params.pp index 54adf268..8b8a0fde 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -77,6 +77,7 @@ '3.debian.pool.ntp.org', ] $maxpoll = undef + $service_provider= undef } 'Debian': { $config = $default_config @@ -98,6 +99,7 @@ '3.debian.pool.ntp.org', ] $maxpoll = undef + $service_provider= undef } 'RedHat': { $config = $default_config @@ -106,6 +108,7 @@ $package_name = $default_package_name $service_name = $default_service_name $maxpoll = undef + $service_provider= undef case $::operatingsystem { 'Fedora': { @@ -146,16 +149,20 @@ $service_name = 'ntp' $keys_file = '/etc/ntp.keys' $package_name = [ 'xntp' ] + $service_provider = undef } '11': { $service_name = 'ntp' $keys_file = $default_keys_file $package_name = $default_package_name + $service_provider = undef } '12': { $service_name = 'ntpd' $keys_file = '/etc/ntp.keys' $package_name = $default_package_name + #Puppet 3 does not recognise systemd as service provider on SLES 12. + $service_provider = 'systemd' } default: { fail("The ${module_name} module is not supported on an ${::operatingsystem} ${::operatingsystemmajrelease} distribution.") @@ -163,6 +170,7 @@ } } 'OpenSuSE': { + $service_provider = undef case $::operatingsystemrelease { '13.2': { $service_name = 'ntpd' @@ -180,6 +188,7 @@ $service_name = 'ntp' $keys_file = $default_keys_file $package_name = $default_package_name + $service_provider = undef } } $config = $default_config @@ -219,6 +228,7 @@ '3.freebsd.pool.ntp.org', ] $maxpoll = 9 + $service_provider= undef } 'Archlinux': { $config = $default_config @@ -240,6 +250,7 @@ '3.arch.pool.ntp.org', ] $maxpoll = undef + $service_provider= undef } 'Solaris': { $config = '/etc/inet/ntp.conf' @@ -272,6 +283,7 @@ '3.pool.ntp.org', ] $maxpoll = undef + $service_provider= undef } # Gentoo was added as its own $::osfamily in Facter 1.7.0 'Gentoo': { @@ -294,6 +306,7 @@ '3.gentoo.pool.ntp.org', ] $maxpoll = undef + $service_provider= undef } 'Linux': { # Account for distributions that don't have $::osfamily specific settings. @@ -319,6 +332,7 @@ '3.gentoo.pool.ntp.org', ] $maxpoll = undef + $service_provider= undef } 'Amazon': { $config = $default_config @@ -339,6 +353,7 @@ '2.centos.pool.ntp.org', ] $maxpoll = undef + $service_provider= undef $disable_monitor = false } default: { diff --git a/manifests/service.pp b/manifests/service.pp index 6bc951bf..c59162a5 100644 --- a/manifests/service.pp +++ b/manifests/service.pp @@ -10,6 +10,7 @@ ensure => $ntp::service_ensure, enable => $ntp::service_enable, name => $ntp::service_name, + provider => $ntp::service_provider, hasstatus => true, hasrestart => true, } diff --git a/spec/classes/ntp_spec.rb b/spec/classes/ntp_spec.rb index 99762da4..e7dc770c 100644 --- a/spec/classes/ntp_spec.rb +++ b/spec/classes/ntp_spec.rb @@ -3,22 +3,19 @@ describe 'ntp' do let(:facts) {{ :is_virtual => 'false' }} - ['Debian', 'RedHat', 'Fedora', 'Suse', 'FreeBSD', 'Archlinux', 'Gentoo', 'Gentoo (Facter < 1.7)'].each do |system| + ['Debian', 'RedHat', 'Fedora', 'Suse11', 'Suse12', 'FreeBSD', 'Archlinux', 'Gentoo', 'Gentoo (Facter < 1.7)'].each do |system| context "when on system #{system}" do - if system == 'Gentoo (Facter < 1.7)' - let :facts do + let :facts do + case system + when 'Gentoo (Facter < 1.7)' super().merge({ :osfamily => 'Linux', :operatingsystem => 'Gentoo' }) - end - elsif system == 'Suse' - let :facts do - super().merge({ :osfamily => system,:operatingsystem => 'SLES',:operatingsystemmajrelease => '11' }) - end - elsif system == 'Fedora' - let :facts do - super().merge({ :osfamily => 'RedHat', :operatingsystem => system ,:operatingsystemmajrelease => '22' }) - end - else - let :facts do + when 'Suse11' + super().merge({ :osfamily => 'Suse', :operatingsystem => 'SLES', :operatingsystemmajrelease => '11' }) + when 'Suse12' + super().merge({ :osfamily => 'Suse', :operatingsystem => 'SLES', :operatingsystemmajrelease => '12' }) + when 'Fedora' + super().merge({ :osfamily => 'RedHat', :operatingsystem => system, :operatingsystemmajrelease => '22' }) + else super().merge({ :osfamily => system }) end end @@ -32,6 +29,10 @@ it { should contain_file('/etc/ntp.conf').with_group('0') } it { should contain_file('/etc/ntp.conf').with_mode('0644') } + if system == 'Suse12' + it { should contain_file('/var/run/ntp/servers-netconfig').with_ensure_absent } + end + describe 'allows template to be overridden' do let(:params) {{ :config_template => 'my_ntp/ntp.conf.erb' }} it { should contain_file('/etc/ntp.conf').with({