diff --git a/ansible/filter_plugins/networks.py b/ansible/filter_plugins/networks.py
index caff302dd..f32ad0d04 100644
--- a/ansible/filter_plugins/networks.py
+++ b/ansible/filter_plugins/networks.py
@@ -200,11 +200,13 @@ def net_interface_obj(context, name, inventory_hostname=None):
             "Network interface for network '%s' on host '%s' not found" %
             (name, inventory_hostname))
     ip = net_ip(context, name, inventory_hostname)
-    if ip is None:
-        ip = '0.0.0.0'
     cidr = net_cidr(context, name, inventory_hostname)
     netmask = net_mask(context, name, inventory_hostname)
     gateway = net_gateway(context, name, inventory_hostname)
+    if ip is None:
+        ip = ''
+        gateway = None
+        netmask = None
     vlan = net_vlan(context, name, inventory_hostname)
     mtu = net_mtu(context, name, inventory_hostname)
     routes = net_routes(context, name, inventory_hostname)
@@ -248,11 +250,13 @@ def net_bridge_obj(context, name, inventory_hostname=None):
             "Network interface for network '%s' on host '%s' not found" %
             (name, inventory_hostname))
     ip = net_ip(context, name, inventory_hostname)
-    if ip is None:
-        ip = '0.0.0.0'
     cidr = net_cidr(context, name, inventory_hostname)
     netmask = net_mask(context, name, inventory_hostname)
     gateway = net_gateway(context, name, inventory_hostname)
+    if ip is None:
+        ip = ''
+        gateway = None
+        netmask = None
     vlan = net_vlan(context, name, inventory_hostname)
     mtu = net_mtu(context, name, inventory_hostname)
     ports = net_bridge_ports(context, name, inventory_hostname)
@@ -298,11 +302,13 @@ def net_bond_obj(context, name, inventory_hostname=None):
             "Network interface for network '%s' on host '%s' not found" %
             (name, inventory_hostname))
     ip = net_ip(context, name, inventory_hostname)
-    if ip is None:
-        ip = '0.0.0.0'
     cidr = net_cidr(context, name, inventory_hostname)
     netmask = net_mask(context, name, inventory_hostname)
     gateway = net_gateway(context, name, inventory_hostname)
+    if ip is None:
+        ip = ''
+        gateway = None
+        netmask = None
     vlan = net_vlan(context, name, inventory_hostname)
     mtu = net_mtu(context, name, inventory_hostname)
     mode = net_bond_mode(context, name, inventory_hostname)
diff --git a/releasenotes/notes/fix-no-ip-addr-on-nic-38d6f8e8078f534d.yaml b/releasenotes/notes/fix-no-ip-addr-on-nic-38d6f8e8078f534d.yaml
new file mode 100644
index 000000000..c4b5ff935
--- /dev/null
+++ b/releasenotes/notes/fix-no-ip-addr-on-nic-38d6f8e8078f534d.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Fixes issues when network interfaces are configured without IP addresses.
+    See `story 2007900 <https://storyboard.openstack.org/#!/story/2007900>`__
+    for details.