From: Benjamin Cherian Date: Wed, 5 Sep 2018 16:59:50 +0000 (-0700) Subject: Add support for different NTP daemons X-Git-Tag: v3.2.0beta3 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=85071e6e530ddd80df35920d9fbe63047478d66b;p=ceph-ansible.git Add support for different NTP daemons Allow user to choose between timesyncd, chronyd and ntpd Installation will default to timesyncd since it is distributed as part of the systemd installation for most distros. Added note indicating NTP daemon type is not used for containerized deployments. Fixes issue #3086 on Github Signed-off-by: Benjamin Cherian --- diff --git a/group_vars/all.yml.sample b/group_vars/all.yml.sample index 7d6b0a879..42e6fa814 100644 --- a/group_vars/all.yml.sample +++ b/group_vars/all.yml.sample @@ -105,10 +105,15 @@ dummy: # Whether or not to install the ceph-test package. #ceph_test: false -# Enable the ntp service by default to avoid clock skew on -# ceph nodes +# Enable the ntp service by default to avoid clock skew on ceph nodes +# Disable if an appropriate NTP client is already installed and configured #ntp_service_enabled: true +# Set type of NTP client daemon to use, valid entries are chronyd, ntpd or timesyncd +# Note that this selection is currently ignored on containerized deployments +#ntp_daemon_type: timesyncd + + # Set uid/gid to default '64045' for bootstrap directories. # '64045' is used for debian based distros. It must be set to 167 in case of rhel based distros. # These values have to be set according to the base OS used by the container image, NOT the host. diff --git a/group_vars/rhcs.yml.sample b/group_vars/rhcs.yml.sample index 055ad00f2..b260831dc 100644 --- a/group_vars/rhcs.yml.sample +++ b/group_vars/rhcs.yml.sample @@ -105,10 +105,15 @@ fetch_directory: ~/ceph-ansible-keys # Whether or not to install the ceph-test package. #ceph_test: false -# Enable the ntp service by default to avoid clock skew on -# ceph nodes +# Enable the ntp service by default to avoid clock skew on ceph nodes +# Disable if an appropriate NTP client is already installed and configured #ntp_service_enabled: true +# Set type of NTP client daemon to use, valid entries are chronyd, ntpd or timesyncd +# Note that this selection is currently ignored on containerized deployments +#ntp_daemon_type: timesyncd + + # Set uid/gid to default '64045' for bootstrap directories. # '64045' is used for debian based distros. It must be set to 167 in case of rhel based distros. # These values have to be set according to the base OS used by the container image, NOT the host. diff --git a/roles/ceph-common/tasks/misc/ntp_debian.yml b/roles/ceph-common/tasks/misc/ntp_debian.yml index f94003d7a..f1da045f1 100644 --- a/roles/ceph-common/tasks/misc/ntp_debian.yml +++ b/roles/ceph-common/tasks/misc/ntp_debian.yml @@ -1,11 +1,29 @@ --- -- name: install ntp on debian - package: - name: ntp - state: present +- name: setup ntpd + block: + - command: timedatectl set-ntp no + - package: + name: ntp + state: present + - service: + name: ntp + enabled: yes + state: started + when: ntp_daemon_type == "ntpd" -- name: start the ntp service - service: - name: ntp - enabled: yes - state: started +- name: setup chrony + block: + - command: timedatectl set-ntp no + - package: + name: chrony + state: present + - service: + name: chronyd + enabled: yes + state: started + when: ntp_daemon_type == "chronyd" + +- name: setup timesyncd + block: + - command: timedatectl set-ntp on + when: ntp_daemon_type == "timesyncd" diff --git a/roles/ceph-common/tasks/misc/ntp_rpm.yml b/roles/ceph-common/tasks/misc/ntp_rpm.yml index 91d2d7d8a..866667c2b 100644 --- a/roles/ceph-common/tasks/misc/ntp_rpm.yml +++ b/roles/ceph-common/tasks/misc/ntp_rpm.yml @@ -1,11 +1,29 @@ --- -- name: install ntp - package: - name: ntp - state: present +- name: setup ntpd + block: + - command: timedatectl set-ntp no + - package: + name: ntp + state: present + - service: + name: ntpd + enabled: yes + state: started + when: ntp_daemon_type == "ntpd" -- name: start the ntp service - service: - name: ntpd - enabled: yes - state: started +- name: setup chrony + block: + - command: timedatectl set-ntp no + - package: + name: chrony + state: present + - service: + name: chronyd + enabled: yes + state: started + when: ntp_daemon_type == "chronyd" + +- name: setup timesyncd + block: + - command: timedatectl set-ntp on + when: ntp_daemon_type == "timesyncd" diff --git a/roles/ceph-defaults/defaults/main.yml b/roles/ceph-defaults/defaults/main.yml index 8fd965582..91e2aa5ea 100644 --- a/roles/ceph-defaults/defaults/main.yml +++ b/roles/ceph-defaults/defaults/main.yml @@ -97,10 +97,15 @@ suse_package_dependencies: # Whether or not to install the ceph-test package. ceph_test: false -# Enable the ntp service by default to avoid clock skew on -# ceph nodes +# Enable the ntp service by default to avoid clock skew on ceph nodes +# Disable if an appropriate NTP client is already installed and configured ntp_service_enabled: true +# Set type of NTP client daemon to use, valid entries are chronyd, ntpd or timesyncd +# Note that this selection is currently ignored on containerized deployments +ntp_daemon_type: timesyncd + + # Set uid/gid to default '64045' for bootstrap directories. # '64045' is used for debian based distros. It must be set to 167 in case of rhel based distros. # These values have to be set according to the base OS used by the container image, NOT the host. diff --git a/roles/ceph-validate/tasks/main.yml b/roles/ceph-validate/tasks/main.yml index 5458a0567..dd7d764e5 100644 --- a/roles/ceph-validate/tasks/main.yml +++ b/roles/ceph-validate/tasks/main.yml @@ -28,6 +28,13 @@ - ceph_rhcs_cdn_debian_repo == 'https://customername:customerpasswd@rhcs.download.redhat.com' - ceph_repository not in ['rhcs', 'dev', 'obs'] +- name: validate ntp daemon type + fail: + msg: "ntp_daemon_type must be one of chronyd, ntpd, or timesyncd" + when: + - ntp_service_enabled + - ntp_daemon_type not in ['chronyd', 'ntpd', 'timesyncd'] + - name: make sure journal_size configured debug: msg: "WARNING: journal_size is configured to {{ journal_size }}, which is less than 5GB. This is not recommended and can lead to severe issues."