diff --git a/roles/etcHosts/tasks/main.yml b/roles/etcHosts/tasks/main.yml
index bc86805d85725fa88bd71bd0136e91b153417553..dadad0ef4e7688fa691fd87696879f84ca6f5d39 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'