diff --git a/roles/ipaclient/library/ipaclient_ipa_conf.py b/roles/ipaclient/library/ipaclient_ipa_conf.py
new file mode 100644
index 0000000000000000000000000000000000000000..5486eba9cc60fe57f6b77f98e8848b10b198b847
--- /dev/null
+++ b/roles/ipaclient/library/ipaclient_ipa_conf.py
@@ -0,0 +1,106 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# Authors:
+#   Thomas Woerner <twoerner@redhat.com>
+#
+# Based on ipa-client-install code
+#
+# Copyright (C) 2018  Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+ANSIBLE_METADATA = {
+    'metadata_version': '1.0',
+    'supported_by': 'community',
+    'status': ['preview'],
+}
+
+DOCUMENTATION = '''
+---
+module: ipaclient_ipa_conf
+short description: Configure ipa.conf
+description:
+  Configure ipa.conf
+options:
+  servers:
+    description: The FQDN of the IPA servers to connect to.
+    required: true
+    type: list
+  domain:
+    description: The primary DNS domain of an existing IPA deployment.
+    required: false
+  realm:
+    description:  The Kerberos realm of an existing IPA deployment.
+    required: false
+  hostname:
+    description: The hostname of the machine to join (FQDN).
+    required: true
+  basedn:
+    description: The basedn of the detected IPA server.
+    returned: always
+    type: string
+    sample: dc=example,dc=com
+author:
+    - Thomas Woerner
+'''
+
+EXAMPLES = '''
+# Backup and set hostname
+- name: Backup and set hostname
+  ipaclient_ipa_conf:
+    server: server.example.com
+    domain: example.com
+    realm: EXAMPLE.COM
+    hostname: client1.example.com
+    basedn: dc=example,dc=com
+'''
+
+RETURN = '''
+'''
+
+import os
+import tempfile
+
+from ansible.module_utils.basic import AnsibleModule
+from ansible.module_utils.ansible_ipa_client import *
+
+def main():
+    module = AnsibleModule(
+        argument_spec = dict(
+            domain=dict(required=True, default=None),
+            servers=dict(required=True, type='list', default=None),
+            realm=dict(required=True, default=None),
+            hostname=dict(required=True, default=None),
+            basedn=dict(required=True),
+        ),
+        supports_check_mode = True,
+    )
+
+    module._ansible_debug = True
+    servers = module.params.get('servers')
+    domain = module.params.get('domain')
+    realm = module.params.get('realm')
+    hostname = module.params.get('hostname')
+    basedn = module.params.get('basedn')
+
+    fstore = sysrestore.FileStore(paths.IPA_CLIENT_SYSRESTORE)
+
+    configure_ipa_conf(fstore, basedn, realm, domain, servers, hostname)
+
+    module.exit_json(changed=True)
+
+if __name__ == '__main__':
+    main()
diff --git a/roles/ipaclient/tasks/install.yml b/roles/ipaclient/tasks/install.yml
index 069966a34b82ec062cd02e170945613e255a03b6..d89646a6ca8a4daff8893f3d22e7a8da16a77123 100644
--- a/roles/ipaclient/tasks/install.yml
+++ b/roles/ipaclient/tasks/install.yml
@@ -200,14 +200,12 @@
     when: not ipaclient_on_master | bool and not result_ipaclient_join.changed and not ipaclient_allow_repair | bool and (result_ipaclient_test_keytab.krb5_keytab_ok or (result_ipaclient_join.already_joined is defined and result_ipaclient_join.already_joined))
 
   - name: Install - Configure IPA default.conf
-    include_role:
-      name: ipaconf
-    vars:
-      ipaconf_server: "{{ result_ipaclient_test.servers[0] }}"
-      ipaconf_domain: "{{ result_ipaclient_test.domain }}"
-      ipaconf_realm: "{{ result_ipaclient_test.realm }}"
-      ipaconf_hostname: "{{ result_ipaclient_test.hostname }}"
-      ipaconf_basedn: "{{ result_ipaclient_test.basedn }}"
+    ipaclient_ipa_conf:
+      servers: "{{ result_ipaclient_test.servers }}"
+      domain: "{{ result_ipaclient_test.domain }}"
+      realm: "{{ result_ipaclient_test.realm }}"
+      hostname: "{{ result_ipaclient_test.hostname }}"
+      basedn: "{{ result_ipaclient_test.basedn }}"
     when: not ipaclient_on_master | bool
 
   - name: Install - Configure SSSD