X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/7b9ec4b60ee39614d1d083d7220e76b07d2b275f..50aea11082eaa90bd37593b9c987d38a082f4e1b:/cookbooks/ntp/recipes/default.rb diff --git a/cookbooks/ntp/recipes/default.rb b/cookbooks/ntp/recipes/default.rb index d56804777..9a15297f0 100644 --- a/cookbooks/ntp/recipes/default.rb +++ b/cookbooks/ntp/recipes/default.rb @@ -1,15 +1,15 @@ # -# Cookbook Name:: ntp +# Cookbook:: ntp # Recipe:: default # -# Copyright 2010, OpenStreetMap Foundation. -# Copyright 2009, Opscode, Inc +# Copyright:: 2010, OpenStreetMap Foundation. +# Copyright:: 2009, Opscode, Inc # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -17,11 +17,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -require "socket" +include_recipe "prometheus" -package "ntp" -package "ntpdate" -package "tzdata" +package %w[ + chrony + tzdata +] execute "dpkg-reconfigure-tzdata" do action :nothing @@ -30,58 +31,45 @@ execute "dpkg-reconfigure-tzdata" do group "root" end -file "/etc/timezone" do +link "/etc/localtime" do + to "/usr/share/zoneinfo/#{node[:ntp][:tz]}" owner "root" group "root" - mode 0644 - content "#{node[:tz]}\n" - notifies :run, resources(:execute => "dpkg-reconfigure-tzdata"), :immediately + notifies :run, "execute[dpkg-reconfigure-tzdata]", :immediately end -service "ntp" do - action [ :enable, :start ] - supports :status => true, :restart => true -end - -template "/etc/ntp.conf" do - source "ntp.conf.erb" +template "/etc/chrony/chrony.conf" do + source "chrony.conf.erb" owner "root" group "root" - mode 0644 - notifies :restart, resources(:service => "ntp") + mode "644" + notifies :restart, "service[chrony]" end -munin_plugins = [] - -if node[:lsb][:release].to_f <= 8.04 - munin_plugins = [ "ntp_states" ] - - node[:ntp][:servers].each do |name| - name = Socket.gethostbyname(name)[0].gsub!(/[.-]/, "_") - - munin_plugin "ntp_#{name}" do - target "ntp_" - end +service "systemd-timesyncd" do + action [:stop, :disable] +end - munin_plugins.push("ntp_#{name}") - end +systemd_service "chrony-restart" do + service "chrony" + dropin "restart" + restart "on-failure" + notifies :restart, "service[chrony]" +end - munin_plugin "ntp_states" -else - munin_plugins = [ "ntp_kernel_err", "ntp_kernel_pll_freq", "ntp_kernel_pll_off", "ntp_offset" ] +service "chrony" do + action [:enable, :start] +end - munin_plugin "ntp_kernel_err" - munin_plugin "ntp_kernel_pll_freq" - munin_plugin "ntp_kernel_pll_off" - munin_plugin "ntp_offset" +prometheus_exporter "chrony" do + port 9123 end -if File.directory?("/etc/munin/plugins") - Dir.new("/etc/munin/plugins").each do |plugin| - if plugin.match(/^ntp_/) and not munin_plugins.include?(plugin) - munin_plugin plugin do - action :delete - end - end - end +# chrony occasionally marks all servers offline during a network outage. +# force online all sources during a chef run +execute "chronyc-online" do + command "/usr/bin/chronyc online" + user "root" + group "root" + ignore_failure true end