summaryrefslogtreecommitdiff
path: root/cloudinit/config/cc_ntp.py
diff options
context:
space:
mode:
Diffstat (limited to 'cloudinit/config/cc_ntp.py')
-rw-r--r--cloudinit/config/cc_ntp.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/cloudinit/config/cc_ntp.py b/cloudinit/config/cc_ntp.py
index e33032fd..225f898a 100644
--- a/cloudinit/config/cc_ntp.py
+++ b/cloudinit/config/cc_ntp.py
@@ -74,10 +74,19 @@ def handle(name, cfg, cloud, log, _args):
"not present or disabled by cfg", name)
return True
- install_ntp(cloud.distro.install_packages, packages=['ntp'],
- check_exe="ntpd")
rename_ntp_conf()
+ # ensure when ntp is installed it has a configuration file
+ # to use instead of starting up with packaged defaults
write_ntp_config_template(ntp_cfg, cloud)
+ install_ntp(cloud.distro.install_packages, packages=['ntp'],
+ check_exe="ntpd")
+
+ # if ntp was already installed, it may not have started
+ try:
+ reload_ntp(systemd=cloud.distro.uses_systemd())
+ except util.ProcessExecutionError as e:
+ LOG.exception("Failed to reload/start ntp service: %s", e)
+ raise
def install_ntp(install_func, packages=None, check_exe="ntpd"):
@@ -90,6 +99,7 @@ def install_ntp(install_func, packages=None, check_exe="ntpd"):
def rename_ntp_conf(config=NTP_CONF):
+ """Rename any existing ntp.conf file and render from template"""
if os.path.exists(config):
util.rename(config, config + ".dist")
@@ -125,4 +135,14 @@ def write_ntp_config_template(cfg, cloud):
templater.render_to_file(template_fn, NTP_CONF, params)
+
+def reload_ntp(systemd=False):
+ service = 'ntp'
+ if systemd:
+ cmd = ['systemctl', 'reload-or-restart', service]
+ else:
+ cmd = ['service', service, 'restart']
+ util.subp(cmd, capture=True)
+
+
# vi: ts=4 expandtab