diff --git a/roles/ipareplica/library/ipareplica_test.py b/roles/ipareplica/library/ipareplica_test.py
index c7601816e15e0b0d05f1bf21f8b1a0e1d57528b8..8ff391f2ebe543cb5a3375cd40d0b935e65fd3e1 100644
--- a/roles/ipareplica/library/ipareplica_test.py
+++ b/roles/ipareplica/library/ipareplica_test.py
@@ -297,7 +297,12 @@ def main():
         with redirect_stdout(ansible_log):
             common_check(options.no_ntp)
     except Exception as msg: #ScriptError as msg:
-        ansible_module.fail_json(msg=str(msg))
+        _msg = str(msg)
+        if "server is already configured" in _msg:
+            ansible_module.exit_json(changed=False,
+                                     server_already_configured=True)
+        else:
+            ansible_module.fail_json(msg=_msg)
 
     # TODO: Check ntp_servers and ntp_pool
 
@@ -321,7 +326,7 @@ def main():
 
     # done #
 
-    ansible_module.exit_json(changed=True,
+    ansible_module.exit_json(changed=False,
                              ipa_python_version=IPA_PYTHON_VERSION,
                              ### basic ###
                              domain=options.domain_name,
diff --git a/roles/ipareplica/tasks/install.yml b/roles/ipareplica/tasks/install.yml
index e8e8056a83150cdf2d9640febbf6e6acd0bf4874..a6309561e88b71ee420221202be0d618c85bf534 100644
--- a/roles/ipareplica/tasks/install.yml
+++ b/roles/ipareplica/tasks/install.yml
@@ -68,6 +68,9 @@
     no_dnssec_validation: "{{ ipareplica_no_dnssec_validation }}"
   register: result_ipareplica_test
 
+- meta: end_play
+  when: result_ipareplica_test.client_already_configured is defined or result_ipareplica_test.server_already_configured is defined
+
 - block:
 
   - name: Install - Setup client