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