From 9dc1444cca10edb9e0fdf7a598dfb3af738d8632 Mon Sep 17 00:00:00 2001
From: Chris Hines <chris.hines@monash.edu>
Date: Thu, 23 Feb 2017 12:44:21 +1100
Subject: [PATCH] better filters to only execute shell commands when necessary

---
 roles/etcHosts/tasks/main.yml | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/roles/etcHosts/tasks/main.yml b/roles/etcHosts/tasks/main.yml
index bc86805d..dadad0ef 100644
--- a/roles/etcHosts/tasks/main.yml
+++ b/roles/etcHosts/tasks/main.yml
@@ -2,18 +2,34 @@
   copy: src=files/etcHosts dest=/etc/hosts owner=root mode=644
   sudo: true
 
+- name: get hostname by sysctl
+  shell: sysctl kernel.hostname | cut -f 3 -d " "
+  register: sysctl_hostname
+  check_mode: no
+  become: true
+  become_user: root
+
 - name: set hostname by sysctl
   shell: sysctl kernel.hostname="{{ inventory_hostname }}"
   sudo: true
+  when: not "{{ sysctl_hostname.stdout }}" == "{{ inventory_hostname }}"
+
+- name: get domainname by sysctl
+  shell: sysctl kernel.domainname | cut -f 3 -d " "
+  register: sysctl_domainname
+  check_mode: no
+  become: true
+  become_user: root
 
 - name: set domainname by sysctl
   shell: sysctl kernel.domainname="{{ domain }}"
   sudo: true
+  when: not "{{ sysctl_domainname.stdout }}" == "{{ domain }}"
 
 - name: set /etc/sysconfig/network on CentOS 6
   lineinfile: dest=/etc/sysconfig/network line='HOSTNAME={{ inventory_hostname }}' regexp='^HOSTNAME'
   sudo: true
-  when: ansible_distribution == "CentOS"
+  when: ansible_distribution == "CentOS" and ansible_distribution_major_version == "6"
 
 - name: set /etc/sysctl.conf on Debian 8
   lineinfile: dest=/etc/sysctl.conf line='kernel.domainname = {{ domain }}' regexp='^#kernel.domainname'
-- 
GitLab