diff --git a/roles/ipaclient/library/ipaclient_test.py b/roles/ipaclient/library/ipaclient_test.py
index a3dead2a57b521d9f82711c557bb4f726b1d592d..444792977b6dc2e8c916eb0960249ce9a54770e5 100644
--- a/roles/ipaclient/library/ipaclient_test.py
+++ b/roles/ipaclient/library/ipaclient_test.py
@@ -848,14 +848,18 @@ def main():
 
     # Check if ipa client is already configured
     if is_client_configured():
+        client_already_configured = True
+
         # Check that realm and domain match
         current_config = get_ipa_conf()
         if cli_domain != current_config.get('domain'):
-            return module.fail_json(msg="IPA client already installed "
-                                        "with a conflicting domain")
+            module.fail_json(msg="IPA client already installed "
+                             "with a conflicting domain")
         if cli_realm != current_config.get('realm'):
-            return module.fail_json(msg="IPA client already installed "
-                                        "with a conflicting realm")
+            module.fail_json(msg="IPA client already installed "
+                             "with a conflicting realm")
+    else:
+        client_already_configured = False
 
     # Done
     module.exit_json(changed=False,
@@ -868,6 +872,7 @@ def main():
                      client_domain=client_domain,
                      dnsok=dnsok,
                      sssd=options.sssd,
+                     client_already_configured=client_already_configured,
                      ipa_python_version=IPA_PYTHON_VERSION)
 
 if __name__ == '__main__':
diff --git a/roles/ipaclient/tasks/install.yml b/roles/ipaclient/tasks/install.yml
index 03c3910729f5d86269bdf41427c3807ad039a740..0b70d02aaf7757241f3cd679af15a31bee42d7e2 100644
--- a/roles/ipaclient/tasks/install.yml
+++ b/roles/ipaclient/tasks/install.yml
@@ -53,6 +53,9 @@
     enable_dns_updates: "{{ ipassd_enable_dns_updates }}"
   register: result_ipaclient_test
 
+- meta: end_play
+  when: result_ipaclient_test.client_already_configured and not ipaclient_allow_repair | bool and not ipaclient_force_join | bool
+
 - name: Install - Set default principal if no keytab is given
   set_fact:
     ipaadmin_principal: admin