diff --git a/plugins/module_utils/ansible_freeipa_module.py b/plugins/module_utils/ansible_freeipa_module.py index 6acdbef..5066de3 100644 --- a/plugins/module_utils/ansible_freeipa_module.py +++ b/plugins/module_utils/ansible_freeipa_module.py @@ -28,6 +28,7 @@ import shutil import gssapi from datetime import datetime from ipalib import api +from ipalib import errors as ipalib_errors from ipalib.config import Env from ipalib.constants import DEFAULT_CONFIG, LDAP_GENERALIZED_TIME_FORMAT try: diff --git a/plugins/modules/ipahost.py b/plugins/modules/ipahost.py index 558560e..062f768 100644 --- a/plugins/modules/ipahost.py +++ b/plugins/modules/ipahost.py @@ -409,7 +409,7 @@ from ansible.module_utils._text import to_text from ansible.module_utils.ansible_freeipa_module import temp_kinit, \ temp_kdestroy, valid_creds, api_connect, api_command, compare_args_ipa, \ module_params_get, gen_add_del_lists, encode_certificate, api_get_realm, \ - is_ipv4_addr, is_ipv6_addr + is_ipv4_addr, is_ipv6_addr, ipalib_errors import six @@ -871,7 +871,20 @@ def main(): # Make sure host exists res_find = find_host(ansible_module, name) - res_find_dnsrecord = find_dnsrecord(ansible_module, name) + try: + res_find_dnsrecord = find_dnsrecord(ansible_module, name) + except ipalib_errors.NotFound as e: + msg = str(e) + if ip_address is None and \ + ("DNS is not configured" in msg or \ + "DNS zone not found" in msg): + # IP address(es) not given and no DNS support in IPA + # -> Ignore failure + # IP address(es) not given and DNS zone is not found + # -> Ignore failure + res_find_dnsrecord = None + else: + ansible_module.fail_json(msg="%s: %s" % (host, msg)) # Create command if state == "present": diff --git a/tests/host/test_host_ipaddresses.yml b/tests/host/test_host_ipaddresses.yml index 0a97dd5..136a610 100644 --- a/tests/host/test_host_ipaddresses.yml +++ b/tests/host/test_host_ipaddresses.yml @@ -301,6 +301,15 @@ register: result failed_when: result.changed + - name: Absent host01.ihavenodns.info test + ipahost: + ipaadmin_password: MyPassword123 + hosts: + - name: host01.ihavenodns.info + state: absent + register: result + failed_when: result.changed + - name: Host absent ipahost: ipaadmin_password: MyPassword123