A causa da não sincronização com um servidor cujo tempo é tão diferente está documentada aqui :
5.1.1.4 O que acontece se o tempo de referência mudar?
Idealmente, o tempo de referência é o mesmo em todo o mundo. Uma vez sincronizado, não deve haver alterações inesperadas entre o relógio do sistema operacional e o relógio de referência. Portanto, o NTP não possui métodos especiais para lidar com a situação.
Em vez disso, a reação do ntpd dependerá do deslocamento entre o relógio local e o tempo de referência. Para um pequeno deslocamento, o ntpd ajustará o relógio local como de costume; para compensações pequenas e maiores, o ntpd rejeitará o tempo de referência por um tempo. Neste último caso, o relógio do sistema operacional continuará com as últimas correções efetivas enquanto o novo tempo de referência estiver sendo rejeitado. Após algum tempo, pequenas compensações (significativamente menos de um segundo) serão reduzidas (ajustadas lentamente), enquanto compensações maiores farão com que o relógio seja acelerado (ajustado novamente). Grandes compensações são rejeitadas e o ntpd será encerrado, acreditando que algo muito estranho deve ter acontecido.
Na minha configuração atual do NTP, também controlada por puppet
, forço a sincronização com o servidor, tanto no ntp.conf
arquivo, usando tinker panic
como nas configurações do daemon ( /etc/sysconfig/ntpd
), conforme descrito na página de ntpd(8)
manual:
-g Normalmente, o ntpd sai com uma mensagem no log do sistema se o deslocamento exceder o limite de pânico, que é 1000 s por padrão. Esta opção permite que o tempo seja definido para qualquer valor sem restrição; no entanto, isso pode acontecer apenas uma vez. Se o limite for excedido depois disso, o ntpd será encerrado com uma mensagem no log do sistema. Esta opção pode ser usada com as opções -q e -x.
Faço isso porque posso confiar no servidor NTP ao qual estou me conectando.
A parte relevante do módulo que se aplica aos clientes é a seguinte:
class ntp (
$foo
$bar
...
){
$my_files = {
'ntp.conf' => {
path => '/etc/ntp.conf',
content => template("ntp/ntp.conf.$template.erb"),
selrole => 'object_r',
seltype => 'net_conf_t',
require => Package['ntp'], },
'ntp-sysconfig' => {
path => '/etc/sysconfig/ntpd',
source => 'puppet:///modules/ntp/ntp-sysconfig',
require => Package['ntp'], },
...
}
$my_files_defaults = {
ensure => file,
owner => 'root',
group => 'root',
mode => '0644',
selrange => 's0',
selrole => 'object_r',
seltype => 'etc_t',
seluser => 'system_u',
}
create_resources(file, $my_files, $my_files_defaults)
exec { 'ntp initial clock set':
command => '/usr/sbin/ntpd -g -q -u ntp:ntp',
refreshonly => true,
timeout => '-1',
subscribe => File['/etc/ntp.conf'],
}
}
E o conteúdo dos arquivos referenciados são:
$ cat devops/puppet/modules/ntp/files/ntp-sysconfig
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g -a"
e:
$ cat devops/puppet/modules/ntp/templates/ntp.conf.RedHat.erb
# HEADER: This file was autogenerated by puppet.
# HEADER: While it can still be managed manually, it
# HEADER: is definitely not recommended.
tinker panic 0
<% server.each do |ntpserver| -%>
server <%= ntpserver %> autokey
<% end -%>
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
crypto pw hunter2
crypto randfile /dev/urandom
keysdir /etc/ntp
A hiera
peça está faltando aqui, mas você entendeu.
tinker panic 0