diff --git a/roles/chrony/defaults/main.yaml b/roles/chrony/defaults/main.yaml new file mode 100644 index 0000000..275b5fc --- /dev/null +++ b/roles/chrony/defaults/main.yaml @@ -0,0 +1,7 @@ +--- +chrony_package_name: 'chrony' +chrony_package_state: 'present' + +chrony_service_name: 'chrony' +chrony_service_state: 'started' +chrony_service_enabled: yes diff --git a/roles/chrony/handlers/main.yaml b/roles/chrony/handlers/main.yaml new file mode 100644 index 0000000..32371ec --- /dev/null +++ b/roles/chrony/handlers/main.yaml @@ -0,0 +1,6 @@ +--- +- name: reload chrony + service: + name: "{{ chrony_service_name }}" + state: reloaded + when: chrony_service_enabled diff --git a/roles/chrony/tasks/main.yaml b/roles/chrony/tasks/main.yaml new file mode 100644 index 0000000..7227745 --- /dev/null +++ b/roles/chrony/tasks/main.yaml @@ -0,0 +1,30 @@ +--- +- name: gather OS specific variables + include_vars: "{{ item }} " + with_first_found: + - "{{ ansible_distribution }}.yaml" + - "{{ ansible_os_family }}.yaml" + +- name: stop/disable systemd-timesyncd + service: + name: systemd-timesyncd.service + state: stopped + enabled: no + +- name: install chrony + package: + name: "{{ chrony_package_name }}" + state: "{{ chrony_package_state }}" + +- name: configure chrony + template: + src: chrony.conf.j2 + dest: /etc/chrony/chrony.conf + notify: + - reload chrony + +- name: start chrony + service: + name: "{{ chrony_service_name }}" + state: "{{ chrony_service_state }}" + enabled: "{{ chrony_service_enabled }}" diff --git a/roles/chrony/templates/chrony.conf.j2 b/roles/chrony/templates/chrony.conf.j2 new file mode 100644 index 0000000..44fb0bc --- /dev/null +++ b/roles/chrony/templates/chrony.conf.j2 @@ -0,0 +1,46 @@ +# {{ ansible_managed }} + +# Welcome to the chrony configuration file. See chrony.conf(5) for more +# information about usuable directives. + +# This will use (up to): +# - 4 sources from ntp.ubuntu.com which some are ipv6 enabled +# - 2 sources from 2.ubuntu.pool.ntp.org which is ipv6 enabled as well +# - 1 source from [01].ubuntu.pool.ntp.org each (ipv4 only atm) +# This means by default, up to 6 dual-stack and up to 2 additional IPv4-only +# sources will be used. +# At the same time it retains some protection against one of the entries being +# down (compare to just using one of the lines). See (LP: #1754358) for the +# discussion. +# +# About using servers from the NTP Pool Project in general see (LP: #104525). +# Approved by Ubuntu Technical Board on 2011-02-08. +# See http://www.pool.ntp.org/join.html for more information. +{% for p in chrony_pool %} +pool {{ p }} +{% endfor %} + +# This directive specify the location of the file containing ID/key pairs for +# NTP authentication. +keyfile /etc/chrony/chrony.keys + +# This directive specify the file into which chronyd will store the rate +# information. +driftfile /var/lib/chrony/chrony.drift + +# Uncomment the following line to turn logging on. +#log tracking measurements statistics + +# Log files location. +logdir /var/log/chrony + +# Stop bad estimates upsetting machine clock. +maxupdateskew 100.0 + +# This directive enables kernel synchronisation (every 11 minutes) of the +# real-time clock. Note that it can’t be used along with the 'rtcfile' directive. +rtcsync + +# Step the system clock instead of slewing it if the adjustment is larger than +# one second, but only in the first three clock updates. +makestep 1 3 diff --git a/roles/chrony/vars/RedHat.yaml b/roles/chrony/vars/RedHat.yaml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/roles/chrony/vars/RedHat.yaml @@ -0,0 +1 @@ +--- diff --git a/roles/chrony/vars/Ubuntu.yaml b/roles/chrony/vars/Ubuntu.yaml new file mode 100644 index 0000000..80f38bf --- /dev/null +++ b/roles/chrony/vars/Ubuntu.yaml @@ -0,0 +1,6 @@ +--- +chrony_pool: + - ntp.ubuntu.com iburst maxsources 4 + - 0.ubuntu.pool.ntp.org iburst maxsources 1 + - 1.ubuntu.pool.ntp.org iburst maxsources 1 + - 2.ubuntu.pool.ntp.org iburst maxsources 2