cookbooks/fb_ntp/resources/windows_config.rb (37 lines of code) (raw):

# vim: syntax=ruby:expandtab:shiftwidth=2:softtabstop=2:tabstop=2 # # Copyright (c) 2021-present, Vicarious, Inc. # Copyright (c) 2021-present, Facebook, Inc. # All rights reserved. # # 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 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. action_class do def get_current_config config = {} section = nil s = powershell_exec('w32tm /query /configuration') s.result.each do |line| case line when /^\[(.*)\]$/ section = $1 config[section] = {} when /^(\w+)\s*:\s*([^(]+) \(.*\)$/ config[section][$1] = $2 end end config end def set_ntp_servers execute 'set NTP servers' do command 'w32tm /configure /reliable:yes /syncfromflags:manual ' + "/manualpeerlist:#{node['fb_ntp']['servers'].join(',')} /update" end end end action :config do config = get_current_config want = node['fb_ntp']['servers'] have = config['TimeProviders'].fetch('NtpServer', '').split(',') if Set.new(want) == Set.new(have) Chef::Log.debug('fb_ntp[windows_config]: NTP servers are correct') else Chef::Log.info( 'fb_ntp[windows_config]: Changing NTP servers from ' + "#{have.join(', ')} to #{want.join(', ')}", ) set_ntp_servers end end