diff --git a/module_utils/ansible_ipa_server.py b/module_utils/ansible_ipa_server.py
index 8da79a1ccae2dcbe42c500607e4752ad47ee7f0f..0dafd7546b578789d48fe6db75f4f186e4ee9c7e 100644
--- a/module_utils/ansible_ipa_server.py
+++ b/module_utils/ansible_ipa_server.py
@@ -217,3 +217,14 @@ def ds_init_info(ansible_log, fstore, domainlevel, dirsrv_config_file,
                          setup_pkinit=not no_pkinit)
 
     return ds
+
+def ansible_module_get_parsed_ip_addresses(ansible_module,
+                                           param='ip_addresses'):
+    ip_addrs = [ ]
+    for ip in ansible_module.params.get(param):
+        try:
+            ip_parsed = ipautil.CheckedIPAddress(ip)
+        except Exception as e:
+            ansible_module.fail_json(msg="Invalid IP Address %s: %s" % (ip, e))
+        ip_addrs.append(ip_parsed)
+    return ip_addrs
diff --git a/roles/ipaserver/library/ipaserver_prepare.py b/roles/ipaserver/library/ipaserver_prepare.py
index 44c533baff46ceb28e455149a9f3b34176b3fe12..1e12aa858615240347e8bd04e8576f49ddc88013 100644
--- a/roles/ipaserver/library/ipaserver_prepare.py
+++ b/roles/ipaserver/library/ipaserver_prepare.py
@@ -129,7 +129,8 @@ def main():
 
     options.dm_password = ansible_module.params.get('dm_password')
     options.admin_password = ansible_module.params.get('password')
-    options.ip_addresses = ansible_module.params.get('ip_addresses')
+    options.ip_addresses = ansible_module_get_parsed_ip_addresses(
+        ansible_module)
     options.domain_name = ansible_module.params.get('domain')
     options.realm_name = ansible_module.params.get('realm')
     options.host_name = ansible_module.params.get('hostname')
diff --git a/roles/ipaserver/library/ipaserver_setup_ca.py b/roles/ipaserver/library/ipaserver_setup_ca.py
index d8e11398c767c7be505362545a201a5502d58002..c1ff47a5f6c549767faf507067a88272561ca708 100644
--- a/roles/ipaserver/library/ipaserver_setup_ca.py
+++ b/roles/ipaserver/library/ipaserver_setup_ca.py
@@ -130,7 +130,8 @@ def main():
     options.dm_password = ansible_module.params.get('dm_password')
     options.admin_password = ansible_module.params.get('password')
     options.master_password = ansible_module.params.get('master_password')
-    options.ip_addresses = ansible_module.params.get('ip_addresses')
+    options.ip_addresses = ansible_module_get_parsed_ip_addresses(
+        ansible_module)
     options.domain_name = ansible_module.params.get('domain')
     options.realm_name = ansible_module.params.get('realm')
     options.host_name = ansible_module.params.get('hostname')
diff --git a/roles/ipaserver/library/ipaserver_setup_http.py b/roles/ipaserver/library/ipaserver_setup_http.py
index 987fc4168a679d73ff3fc6c561859d87841cac1f..0228920ab3390f89fb2724c183a62fee2efb00ee 100644
--- a/roles/ipaserver/library/ipaserver_setup_http.py
+++ b/roles/ipaserver/library/ipaserver_setup_http.py
@@ -107,7 +107,8 @@ def main():
     options.realm_name = ansible_module.params.get('realm')
     options.host_name = ansible_module.params.get('hostname')
 
-    options.ip_addresses = ansible_module.params.get('ip_addresses')
+    options.ip_addresses = ansible_module_get_parsed_ip_addresses(
+        ansible_module)
     options.reverse_zones = ansible_module.params.get('reverse_zones')
     options.http_cert_files = ansible_module.params.get('http_cert_files')
 
diff --git a/roles/ipaserver/library/ipaserver_setup_krb.py b/roles/ipaserver/library/ipaserver_setup_krb.py
index 3159127596392754c97e573897002ed9046ea6a5..e16f6fc81a6fd60b4f62bc15f3e59bc0e40b275a 100644
--- a/roles/ipaserver/library/ipaserver_setup_krb.py
+++ b/roles/ipaserver/library/ipaserver_setup_krb.py
@@ -98,7 +98,8 @@ def main():
     options.realm_name = ansible_module.params.get('realm')
     options.host_name = ansible_module.params.get('hostname')
 
-    options.ip_addresses = ansible_module.params.get('ip_addresses')
+    options.ip_addresses = ansible_module_get_parsed_ip_addresses(
+        ansible_module)
     options.reverse_zones = ansible_module.params.get('reverse_zones')
 
     options.setup_adtrust = ansible_module.params.get('setup_adtrust')
diff --git a/roles/ipaserver/library/ipaserver_test.py b/roles/ipaserver/library/ipaserver_test.py
index cc0cf4c87f25639c2ea0836bda156795949b12a6..bcb9bc38ec6b2e1cce3a6647281230efbef9f47d 100644
--- a/roles/ipaserver/library/ipaserver_test.py
+++ b/roles/ipaserver/library/ipaserver_test.py
@@ -132,7 +132,8 @@ def main():
     options.dm_password = ansible_module.params.get('dm_password')
     options.admin_password = ansible_module.params.get('password')
     options.master_password = ansible_module.params.get('master_password')
-    options.ip_addresses = ansible_module.params.get('ip_addresses')
+    options.ip_addresses = ansible_module_get_parsed_ip_addresses(
+        ansible_module)
     options.domain_name = ansible_module.params.get('domain')
     options.realm_name = ansible_module.params.get('realm')
     options.host_name = ansible_module.params.get('hostname')