Skip to content

Commit

Permalink
feat(config): add recipe to configure chrony
Browse files Browse the repository at this point in the history
  • Loading branch information
sar-make committed Aug 14, 2017
1 parent 332b39c commit 7039a67
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 0 deletions.
33 changes: 33 additions & 0 deletions attributes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,39 @@
# Package to install depending on platform
default[cookbook_name]['package'] = 'chrony'

# Chrony configuration
# Each hash key is a chrony directive.
# If the same directive is needed many times, value should be an array
# If array is let empty, default arrays below is used.
default[cookbook_name]['config'] = {
'server' => [],
'stratumweight' => '0',
'driftfile' => '/var/lib/chrony/drift',
'rtcsync' => '',
'makestep' => '10 3',
'bindcmdaddress' => [],
'keyfile' => '/etc/chrony.keys',
'commandkey' => '1',
'generatecommandkey' => '',
'noclientlog' => '',
'logchange' => '0.5',
'logdir' => '/var/log/chrony'
}

# Default configuration arrays
default[cookbook_name]['default'] = {
'server' => [
'0.centos.pool.ntp.org iburst',
'1.centos.pool.ntp.org iburst',
'2.centos.pool.ntp.org iburst',
'3.centos.pool.ntp.org iburst'
],
'bindcmdaddress' => [
'127.0.0.1',
'::1'
]
}

# Configure retries for the package resources, default = global default (0)
# (mostly used for test purpose)
default[cookbook_name]['package_retries'] = nil
28 changes: 28 additions & 0 deletions libraries/platform_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#
# Copyright (c) 2017 Make.org
#
# 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.
#

def get_platform_specific(platform)
platform_specific = {}
case platform
when 'centos'
platform_specific['config_file'] = '/etc/chrony.conf'
platform_specific['service'] = 'chronyd'
when 'debian'
platform_specific['config_file'] = '/etc/chrony/chrony.conf'
platform_specific['service'] = 'chrony'
end
platform_specific
end
33 changes: 33 additions & 0 deletions recipes/config.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#
# Copyright (c) 2017 Make.org
#
# 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.
#

# Deploy chrony configuration
platform = get_platform_specific(node['platform'])
header = "# Produced by Chef -- changes will be overwritten\n"
content = node[cookbook_name]['config'].to_h.map do |hk, hv|
if hv.is_a?(Array)
hv = node[cookbook_name]['default'][hk] if hv.empty?
hv.map { |v| "#{hk} #{v}" }
else
"#{hk} #{hv}".strip
end
end

file platform['config_file'] do
content "#{header}\n#{content.join("\n")}"
mode '0644'
notifies :restart, "service[#{platform['service']}]"
end
1 change: 1 addition & 0 deletions recipes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@
#

include_recipe "#{cookbook_name}::package"
include_recipe "#{cookbook_name}::config"

0 comments on commit 7039a67

Please sign in to comment.