summaryrefslogtreecommitdiffstats
path: root/ansible/roles
diff options
context:
space:
mode:
authorMichal Ptacek <m.ptacek@partner.samsung.com>2019-04-03 10:27:40 +0000
committerGerrit Code Review <gerrit@onap.org>2019-04-03 10:27:40 +0000
commitcdd93f561042f5ee4df72895e33bc02a122d5104 (patch)
treea66a32e0e4a1c78c9b67d5e8cecee9e5b4270d11 /ansible/roles
parent6969393c445e5a86a6e788cff989c4af06ca84ad (diff)
parent30b2cbf179448d2761af53494a694f4ce986d623 (diff)
Merge "Support time synchronization on hosts"
Diffstat (limited to 'ansible/roles')
-rw-r--r--ansible/roles/chrony/defaults/main.yml16
-rw-r--r--ansible/roles/chrony/handlers/main.yml5
-rw-r--r--ansible/roles/chrony/tasks/main.yml26
-rw-r--r--ansible/roles/chrony/templates/chrony.conf.j222
4 files changed, 69 insertions, 0 deletions
diff --git a/ansible/roles/chrony/defaults/main.yml b/ansible/roles/chrony/defaults/main.yml
new file mode 100644
index 00000000..af433dac
--- /dev/null
+++ b/ansible/roles/chrony/defaults/main.yml
@@ -0,0 +1,16 @@
+---
+timesync: {}
+chrony:
+ servers: "{{ timesync.servers | default([hostvars[groups.infrastructure[0]].cluster_ip]) }}" # chronyd's NTP servers
+ slewclock: "{{ timesync.slewclock | default(false) }}" # chronyd's makestep property
+ timezone: "{{ timesync.timezone | default('Universal') }}" # Timezone name according to tz database
+ makestep: '1 -1'
+ maxjitter: 10 # Max allowed jitter if using infra as time source as it may by unstable due to pretending stratum 1 time source
+ initstepslew: 30
+ conf:
+ RedHat:
+ config_file: /etc/chrony.conf
+ driftfile: /var/lib/chrony/drift
+ Debian:
+ config_file: /etc/chrony/chrony.conf
+ driftfile: /var/lib/chrony/chrony.drift
diff --git a/ansible/roles/chrony/handlers/main.yml b/ansible/roles/chrony/handlers/main.yml
new file mode 100644
index 00000000..80ab9fa9
--- /dev/null
+++ b/ansible/roles/chrony/handlers/main.yml
@@ -0,0 +1,5 @@
+---
+- name: Restart chronyd
+ systemd:
+ name: chronyd
+ state: restarted
diff --git a/ansible/roles/chrony/tasks/main.yml b/ansible/roles/chrony/tasks/main.yml
new file mode 100644
index 00000000..69a11587
--- /dev/null
+++ b/ansible/roles/chrony/tasks/main.yml
@@ -0,0 +1,26 @@
+---
+- name: Check if server mode
+ set_fact:
+ chrony_mode: 'server'
+ when: "'infrastructure' in group_names and timesync.servers is not defined"
+
+- name: Check if client mode
+ set_fact:
+ chrony_mode: 'client'
+ when: "timesync.servers is defined or 'infrastructure' not in group_names"
+
+- name: "Upload chronyd {{ chrony_mode }} configuration"
+ template:
+ src: "chrony.conf.j2"
+ dest: "{{ chrony['conf'][ansible_os_family]['config_file'] }}"
+ notify: Restart chronyd
+
+- name: Ensure chronyd is enabled/running
+ systemd:
+ name: chronyd
+ state: started
+ enabled: true
+
+- name: Setup timezone
+ timezone:
+ name: "{{ chrony.timezone }}"
diff --git a/ansible/roles/chrony/templates/chrony.conf.j2 b/ansible/roles/chrony/templates/chrony.conf.j2
new file mode 100644
index 00000000..3bfb4e40
--- /dev/null
+++ b/ansible/roles/chrony/templates/chrony.conf.j2
@@ -0,0 +1,22 @@
+{% if chrony_mode == 'server' %}
+local stratum 1
+allow
+{% elif chrony_mode == 'client' %}
+{% for tserver in chrony.servers %}
+server {{ tserver }} iburst
+{% endfor %}
+{% if chrony.slewclock == false %}
+{# Step the time by default #}
+makestep {{ chrony.makestep }}
+{% else %}
+{# Slew the clock but step at boot time if time error larger than 30 seconds #}
+initstepslew {{ chrony.initstepslew }}{% for tserver in chrony.servers %} {{ tserver }}{% endfor %}
+
+{% endif %}
+{% if timesync.servers is not defined %}
+maxjitter {{ chrony.maxjitter }}
+{% endif %}
+{% endif %}
+driftfile {{ chrony['conf'][ansible_os_family]['driftfile'] }}
+rtcsync
+logdir /var/log/chrony