diff --git a/lib/ansible/modules/identity/ipa/ipa_host.py b/lib/ansible/modules/identity/ipa/ipa_host.py index d3903e9d9b7..c24caeea576 100644 --- a/lib/ansible/modules/identity/ipa/ipa_host.py +++ b/lib/ansible/modules/identity/ipa/ipa_host.py @@ -65,6 +65,12 @@ options: description: State to ensure default: present choices: ["present", "absent", "disabled"] + update_dns: + description: + - If set C("True") with state as C("absent"), then removes DNS records of the host managed by FreeIPA DNS. + - This option has no effect for states other than "absent". + default: false + version_added: "2.5" extends_documentation_fragment: ipa.documentation version_added: "2.3" ''' @@ -109,6 +115,15 @@ EXAMPLES = ''' ipa_host: ipa.example.com ipa_user: admin ipa_pass: topsecret + +# Ensure host and its DNS record is absent +- ipa_host: + name: host01.example.com + state: absent + ipa_host: ipa.example.com + ipa_user: admin + ipa_pass: topsecret + update_dns: True ''' RETURN = ''' @@ -142,8 +157,8 @@ class HostIPAClient(IPAClient): def host_mod(self, name, host): return self._post_json(method='host_mod', name=name, item=host) - def host_del(self, name): - return self._post_json(method='host_del', name=name) + def host_del(self, name, update_dns): + return self._post_json(method='host_del', name=name, item={'updatedns': update_dns}) def host_disable(self, name): return self._post_json(method='host_disable', name=name) @@ -211,8 +226,9 @@ def ensure(module, client): else: if ipa_host: changed = True + update_dns = module.params.get('update_dns', False) if not module.check_mode: - client.host_del(name=name) + client.host_del(name=name, update_dns=update_dns) return changed, client.host_find(name=name) @@ -228,6 +244,7 @@ def main(): ns_os_version=dict(type='str', aliases=['nsosversion']), user_certificate=dict(type='list', aliases=['usercertificate']), mac_address=dict(type='list', aliases=['macaddress']), + update_dns=dict(type='bool'), state=dict(type='str', default='present', choices=['present', 'absent', 'enabled', 'disabled'])) module = AnsibleModule(argument_spec=argument_spec,