diff --git a/roles/ipaclient/library/ipaclient_set_hostname.py b/roles/ipaclient/library/ipaclient_set_hostname.py new file mode 100644 index 0000000000000000000000000000000000000000..aed2df594b3c099264e7c4173e73b5c121f63a95 --- /dev/null +++ b/roles/ipaclient/library/ipaclient_set_hostname.py @@ -0,0 +1,81 @@ +#!/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_set_hostname +short description: Backup and set hostname +description: + Backup and set hostname +options: + hostname: + description: The hostname of the machine to join (FQDN). + required: true +author: + - Thomas Woerner +''' + +EXAMPLES = ''' +# Backup and set hostname +- name: Backup and set hostname + ipaclient_set_hostname: + hostname: client1.example.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( + hostname=dict(required=True), + ), + supports_check_mode = True, + ) + + module._ansible_debug = True + hostname = module.params.get('hostname') + + fstore = sysrestore.FileStore(paths.IPA_CLIENT_SYSRESTORE) + statestore = sysrestore.StateFile(paths.IPA_CLIENT_SYSRESTORE) + + tasks.backup_hostname(fstore, statestore) + tasks.set_hostname(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 6b78cb948a5aa26441885958400a7a8ee470eb1e..62d9365b9e55199b8ab758999407c11693d57e64 100644 --- a/roles/ipaclient/tasks/install.yml +++ b/roles/ipaclient/tasks/install.yml @@ -131,6 +131,11 @@ failed_when: iparmkeytab.rc != 0 and iparmkeytab.rc != 3 and iparmkeytab.rc != 5 when: ipaclient_use_otp | bool or ipaclient_force_join | bool + - name: Install - Backup and set hostname + ipaclient_set_hostname: + hostname: "{{ ipadiscovery.hostname }}" + when: not ipaclient_on_master | bool + - name: Install - Join IPA ipajoin: servers: "{{ ipadiscovery.servers }}"