From 86f730857639949a2bb5135ae6366d00da424002 Mon Sep 17 00:00:00 2001
From: Fatih Degirmenci <fatih.degirmenci@ericsson.com>
Date: Tue, 18 Apr 2017 10:37:37 +0200
Subject: xci: Force sync time

For some reason, when the nodes are provisioned, they are out
of sync time-wise. This prevents neutron agents on compute nodes
from starting and then everything fails.

This change restarts chrony after the network configuration is updated
and the nodes have internet access and force synchs time on nodes.

Change-Id: Ib27b1fa0313223b52fa2e6229d5a179581d62686
Signed-off-by: Fatih Degirmenci <fatih.degirmenci@ericsson.com>
---
 prototypes/xci/file/ha/configure-targethosts.yml       |  4 ++++
 prototypes/xci/file/mini/configure-targethosts.yml     |  4 ++++
 prototypes/xci/file/noha/configure-targethosts.yml     |  4 ++++
 .../playbooks/roles/synchronize-time/tasks/main.yml    | 18 ++++++++++++++++++
 4 files changed, 30 insertions(+)
 create mode 100644 prototypes/xci/playbooks/roles/synchronize-time/tasks/main.yml

diff --git a/prototypes/xci/file/ha/configure-targethosts.yml b/prototypes/xci/file/ha/configure-targethosts.yml
index cdbe390bf..b03891d0c 100644
--- a/prototypes/xci/file/ha/configure-targethosts.yml
+++ b/prototypes/xci/file/ha/configure-targethosts.yml
@@ -15,6 +15,8 @@
   roles:
     # TODO: this only works for ubuntu/xenial and need to be adjusted for other distros
     - { role: configure-network, src: "../template/controller.interface.j2", dest: "/etc/network/interfaces" }
+    # we need to force sync time with ntp or the nodes will be out of sync timewise
+    - role: synchronize-time
 
 - hosts: compute
   remote_user: root
@@ -24,6 +26,8 @@
   roles:
     # TODO: this only works for ubuntu/xenial and need to be adjusted for other distros
     - { role: configure-network, src: "../template/compute.interface.j2", dest: "/etc/network/interfaces" }
+    # we need to force sync time with ntp or the nodes will be out of sync timewise
+    - role: synchronize-time
 
 - hosts: compute01
   remote_user: root
diff --git a/prototypes/xci/file/mini/configure-targethosts.yml b/prototypes/xci/file/mini/configure-targethosts.yml
index 8daf7d441..7a20c0f63 100644
--- a/prototypes/xci/file/mini/configure-targethosts.yml
+++ b/prototypes/xci/file/mini/configure-targethosts.yml
@@ -15,6 +15,8 @@
   roles:
     # TODO: this only works for ubuntu/xenial and need to be adjusted for other distros
     - { role: configure-network, src: "../template/controller.interface.j2", dest: "/etc/network/interfaces" }
+    # we need to force sync time with ntp or the nodes will be out of sync timewise
+    - role: synchronize-time
 
 - hosts: compute
   remote_user: root
@@ -24,5 +26,7 @@
   roles:
     # TODO: this only works for ubuntu/xenial and need to be adjusted for other distros
     - { role: configure-network, src: "../template/compute.interface.j2", dest: "/etc/network/interfaces" }
+    # we need to force sync time with ntp or the nodes will be out of sync timewise
+    - role: synchronize-time
   # TODO: this role is for configuring NFS on xenial and adjustment needed for other distros
     - role: configure-nfs
diff --git a/prototypes/xci/file/noha/configure-targethosts.yml b/prototypes/xci/file/noha/configure-targethosts.yml
index cdbe390bf..b03891d0c 100644
--- a/prototypes/xci/file/noha/configure-targethosts.yml
+++ b/prototypes/xci/file/noha/configure-targethosts.yml
@@ -15,6 +15,8 @@
   roles:
     # TODO: this only works for ubuntu/xenial and need to be adjusted for other distros
     - { role: configure-network, src: "../template/controller.interface.j2", dest: "/etc/network/interfaces" }
+    # we need to force sync time with ntp or the nodes will be out of sync timewise
+    - role: synchronize-time
 
 - hosts: compute
   remote_user: root
@@ -24,6 +26,8 @@
   roles:
     # TODO: this only works for ubuntu/xenial and need to be adjusted for other distros
     - { role: configure-network, src: "../template/compute.interface.j2", dest: "/etc/network/interfaces" }
+    # we need to force sync time with ntp or the nodes will be out of sync timewise
+    - role: synchronize-time
 
 - hosts: compute01
   remote_user: root
diff --git a/prototypes/xci/playbooks/roles/synchronize-time/tasks/main.yml b/prototypes/xci/playbooks/roles/synchronize-time/tasks/main.yml
new file mode 100644
index 000000000..5c39d897b
--- /dev/null
+++ b/prototypes/xci/playbooks/roles/synchronize-time/tasks/main.yml
@@ -0,0 +1,18 @@
+---
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2017 Ericsson AB and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+# TODO: this role needs to be adjusted for different distros
+- block:
+    - name: restart chrony
+      service:
+        name: chrony
+        state: restarted
+    - name: synchronize time
+      shell: "chronyc -a 'burst 4/4' && chronyc -a makestep"
+  when: ansible_distribution_release == "xenial"
-- 
cgit