Change NTP module

Change options:
* panic - panic is not boolean, it is integer, actually

Add options:
* tinker - disable or enable tinker
* minpoll - to change ntpd send packages frequency
* maxpoll - to change ntpd send packages frequency
* stepout - to change stepout interval

Change-Id: I8da3a129227061bd436e5343dfcceb8eb7a3aca0
Link to upstream fix: https://tickets.puppetlabs.com/browse/MODULES-1925
Related-bug: #1430482
Related-bug: #1436373
This commit is contained in:
Stanislaw Bogatkin 2015-04-08 18:55:54 +03:00
parent b6fef480e4
commit 09ba80fd93
4 changed files with 33 additions and 34 deletions

View File

@ -11,6 +11,8 @@ class ntp (
$keys_controlkey = $ntp::params::keys_controlkey,
$keys_requestkey = $ntp::params::keys_requestkey,
$keys_trusted = $ntp::params::keys_trusted,
$minpoll = $ntp::params::minpoll,
$maxpoll = $ntp::params::maxpoll,
$package_ensure = $ntp::params::package_ensure,
$package_name = $ntp::params::package_name,
$panic = $ntp::params::panic,
@ -22,6 +24,8 @@ class ntp (
$service_ensure = $ntp::params::service_ensure,
$service_manage = $ntp::params::service_manage,
$service_name = $ntp::params::service_name,
$stepout = $ntp::params::stepout,
$tinker = $ntp::params::tinker,
$udlc = $ntp::params::udlc
) inherits ntp::params {
@ -35,9 +39,11 @@ class ntp (
validate_re($keys_controlkey, ['^\d+$', ''])
validate_re($keys_requestkey, ['^\d+$', ''])
validate_array($keys_trusted)
validate_re($minpoll, '^([3-9]|1[0-6])$')
validate_re($minpoll, '^([3-9]|1[0-6])$')
validate_string($package_ensure)
validate_array($package_name)
validate_bool($panic)
validate_re($panic, '^\d+$')
validate_array($preferred_servers)
validate_array($restrict)
validate_array($interfaces)
@ -46,6 +52,8 @@ class ntp (
validate_string($service_ensure)
validate_bool($service_manage)
validate_string($service_name)
validate_re($stepout, '^\d+$')
validate_bool($tinker)
validate_bool($udlc)
if $autoupdate {

View File

@ -8,20 +8,19 @@ class ntp::params {
$keys_requestkey = ''
$keys_trusted = []
$logfile = undef
$minpoll = 6
$package_ensure = 'present'
$panic = 1000
$preferred_servers = []
$service_enable = true
$service_ensure = 'running'
$service_manage = true
$stepout = 300
$tinker = false
$udlc = false
$interfaces = []
# On virtual machines allow large clock skews.
$panic = str2bool($::is_virtual) ? {
true => false,
default => true,
}
$default_config = '/etc/ntp.conf'
$default_keys_file = '/etc/ntp/keys'
$default_driftfile = '/var/lib/ntp/drift'
@ -46,6 +45,7 @@ class ntp::params {
'2.debian.pool.ntp.org',
'3.debian.pool.ntp.org',
]
$maxpoll = 10
}
'Debian': {
$config = $default_config
@ -66,6 +66,7 @@ class ntp::params {
'2.debian.pool.ntp.org',
'3.debian.pool.ntp.org',
]
$maxpoll = 10
}
'RedHat': {
$config = $default_config
@ -85,6 +86,7 @@ class ntp::params {
'1.centos.pool.ntp.org',
'2.centos.pool.ntp.org',
]
$maxpoll = 10
}
'Suse': {
if $::operatingsystem == 'SLES' and $::operatingsystemmajrelease == '12'
@ -111,6 +113,7 @@ class ntp::params {
'2.opensuse.pool.ntp.org',
'3.opensuse.pool.ntp.org',
]
$maxpoll = 10
}
'FreeBSD': {
$config = $default_config
@ -126,11 +129,12 @@ class ntp::params {
$service_name = $default_service_name
$iburst_enable = true
$servers = [
'0.freebsd.pool.ntp.org maxpoll 9',
'1.freebsd.pool.ntp.org maxpoll 9',
'2.freebsd.pool.ntp.org maxpoll 9',
'3.freebsd.pool.ntp.org maxpoll 9',
'0.freebsd.pool.ntp.org',
'1.freebsd.pool.ntp.org',
'2.freebsd.pool.ntp.org',
'3.freebsd.pool.ntp.org',
]
$maxpoll = 9
}
'Archlinux': {
$config = $default_config
@ -150,6 +154,7 @@ class ntp::params {
'1.pool.ntp.org',
'2.pool.ntp.org',
]
$maxpoll = 10
}
'Solaris': {
$config = '/etc/inet/ntp.conf'
@ -173,6 +178,7 @@ class ntp::params {
'2.pool.ntp.org',
'3.pool.ntp.org',
]
$maxpoll = 10
}
# Gentoo was added as its own $::osfamily in Facter 1.7.0
'Gentoo': {
@ -194,6 +200,7 @@ class ntp::params {
'2.gentoo.pool.ntp.org',
'3.gentoo.pool.ntp.org',
]
$maxpoll = 10
}
'Linux': {
# Account for distributions that don't have $::osfamily specific settings.
@ -218,6 +225,7 @@ class ntp::params {
'2.gentoo.pool.ntp.org',
'3.gentoo.pool.ntp.org',
]
$maxpoll = 10
}
default: {
fail("The ${module_name} module is not supported on an ${::operatingsystem} distribution.")

View File

@ -86,6 +86,7 @@ describe 'ntp' do
describe 'preferred servers' do
context "when set" do
let(:params) {{
:maxpoll => 10,
:servers => ['a', 'b', 'c', 'd'],
:preferred_servers => ['a', 'b']
}}
@ -189,6 +190,7 @@ describe 'ntp' do
describe 'with parameter iburst_enable' do
context 'when set to true' do
let(:params) {{
:maxpoll => 10,
:iburst_enable => true,
}}
@ -310,7 +312,7 @@ describe 'ntp' do
it 'uses the freebsd ntp servers by default' do
should contain_file('/etc/ntp.conf').with({
'content' => /server \d.freebsd.pool.ntp.org maxpoll 9 iburst/,
'content' => /server \d.freebsd.pool.ntp.org iburst maxpoll 9/,
})
end
end
@ -375,25 +377,6 @@ describe 'ntp' do
'content' => /server.*127.127.1.0.*fudge.*127.127.1.0 stratum 10/,
})
end
it 'allows large clock skews' do
should contain_file('/etc/ntp.conf').with({
'content' => /tinker panic 0/,
})
end
end
describe 'for physical machines' do
let :facts do
super().merge({ :osfamily => 'Archlinux',
:is_virtual => 'false' })
end
it 'disallows large clock skews' do
should_not contain_file('/etc/ntp.conf').with({
'content' => /tinker panic 0/,
})
end
end
end
end

View File

@ -1,9 +1,9 @@
# ntp.conf: Managed by puppet.
#
<% if @panic == false -%>
<% if @tinker == true -%>
# Keep ntpd from panicking in the event of a large clock skew
# when a VM guest is suspended and resumed.
tinker panic 0
tinker panic <%= @panic %><% if @stepout != 300 -%> stepout <%= @stepout %> <% end %>
<% end -%>
<% if @disable_monitor == true -%>
@ -28,7 +28,7 @@ interface listen <%= interface %>
<% end -%>
<% [@servers].flatten.each do |server| -%>
server <%= server %><% if @iburst_enable == true -%> iburst<% end %><% if @preferred_servers.include?(server) -%> prefer<% end %>
server <%= server %><% if @iburst_enable == true -%> iburst<% end %><% if @preferred_servers.include?(server) -%> prefer<% end %><% if @minpoll.to_i != 6 -%> minpoll <%= @minpoll %><% end %><% if @maxpoll.to_i != 10 -%> maxpoll <%= @maxpoll %><% end %>
<% end -%>
<% if scope.lookupvar('::is_virtual') == "false" or @udlc -%>