From a7ecc23bd9b5121447d806a33b195c7de90b42d7 Mon Sep 17 00:00:00 2001
From: Adar Nimrod <nimrod@shore.co.il>
Date: Thu, 10 Dec 2015 10:54:59 +0200
Subject: [PATCH] Don't run any tasks if the role ran once before.

---
 tasks/main.yml | 32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

diff --git a/tasks/main.yml b/tasks/main.yml
index 5573651..194bd53 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -6,45 +6,49 @@
     that: ansible_os_family in [ 'Debian', 'OpenBSD' ]
 
 - include: init.yml
-  when: ansible_os_family == 'Debian'
+  when: ansible_os_family == 'Debian' and not common_role_finished is defined
 
 - include: backports.yml
-  when: backports|default(False) and ansible_distribution == 'Debian'
+  when: backports|default(False) and ansible_distribution == 'Debian'and common_role_finished is defined
 
 - include: add_repo.yml
-  when: ansible_distribution == 'Debian' and extra_repos is defined
+  when: ansible_distribution == 'Debian' and extra_repos is defined and not common_role_finished is defined
 
 - include: ufw.yml
-  when: ufw|default(True) and ansible_os_family == 'Debian'
+  when: ufw|default(True) and ansible_os_family == 'Debian' and not common_role_finished is defined
 
 - include: tls_cert.yml
-  when: tls_cert|default(True)
+  when: tls_cert|default(True) and not common_role_finished is defined
 
 - include: add_tls_cert.yml
+  when: and not common_role_finished is defined
 
 - include: ssh_ca.yml
-  when: ssh_ca|default(True)
+  when: ssh_ca|default(True) and not common_role_finished is defined
 
 - include: syslog_forward.yml
-  when: syslog_server is defined
+  when: syslog_server is defined and not common_role_finished is defined
 
 - include: collectd_agent.yml
-  when: collectd_graphite_server is defined or collectd_riemann_server is defined or collectd_collectd_server is defined or collectd_statsd_server is defined
+  when: (collectd_graphite_server is defined or collectd_riemann_server is defined or collectd_collectd_server is defined or collectd_statsd_server is defined) and not common_role_finished is defined
 
 - include: mail_forward.yml
-  when: mail_root_alias is defined
+  when: mail_root_alias is defined and not common_role_finished is defined
 
 - include: ldap_login.yml
-  when: ldap_login_server is defined
+  when: ldap_login_server is defined and not common_role_finished is defined
 
 - include: sudo.yml
-  when: sudo|default(True)
+  when: sudo|default(True) and not common_role_finished is defined
 
 - include: ntp.yml
-  when: ntp|default(True)
+  when: ntp|default(True) and not common_role_finished is defined
 
 - include: unattended_upgrades.yml
-  when: unattended_upgrades|default(True) and ansible_os_family == 'Debian'
+  when: unattended_upgrades|default(True) and ansible_os_family == 'Debian' and not common_role_finished is defined
 
 - include: lock_root.yml
-  when: lock_root|default(True)
+  when: lock_root|default(True) and not common_role_finished is defined
+
+- set_fact:
+    common_role_finished: True
-- 
GitLab