diff --git a/plugins/modules/network.py b/plugins/modules/network.py
index 907c569a41f215910d58200597950e7bfe91ae25..bd1a6a7fbb9f32fbd1580c7e74fd80ffbc0af5f1 100644
--- a/plugins/modules/network.py
+++ b/plugins/modules/network.py
@@ -22,17 +22,14 @@ options:
      description:
         - Whether this network is shared or not.
      type: bool
-     default: 'no'
    admin_state_up:
      description:
         - Whether the state should be marked as up or down.
      type: bool
-     default: 'yes'
    external:
      description:
         - Whether this network is externally accessible.
      type: bool
-     default: 'no'
    state:
      description:
         - Indicate desired state of the resource.
@@ -194,9 +191,9 @@ class NetworkModule(OpenStackModule):
 
     argument_spec = dict(
         name=dict(required=True),
-        shared=dict(default=False, type='bool'),
-        admin_state_up=dict(default=True, type='bool'),
-        external=dict(default=False, type='bool'),
+        shared=dict(type='bool'),
+        admin_state_up=dict(type='bool'),
+        external=dict(type='bool'),
         provider_physical_network=dict(),
         provider_network_type=dict(),
         provider_segmentation_id=dict(type='int'),
@@ -245,9 +242,12 @@ class NetworkModule(OpenStackModule):
             if project_id is not None:
                 kwargs['project_id'] = project_id
 
-            kwargs["shared"] = shared
-            kwargs["admin_state_up"] = admin_state_up
-            kwargs["is_router_external"] = external
+            if shared is not None:
+                kwargs["shared"] = shared
+            if admin_state_up is not None:
+                kwargs["admin_state_up"] = admin_state_up
+            if external is not None:
+                kwargs["is_router_external"] = external
 
             if not net:
                 net = self.conn.network.create_network(name=name, **kwargs)
@@ -276,7 +276,13 @@ class NetworkModule(OpenStackModule):
                 for arg in ["shared", "admin_state_up", "is_router_external",
                             "mtu", "port_security_enabled", "dns_domain",
                             "provider_segmentation_id"]:
-                    if arg in kwargs and kwargs[arg] != net[arg]:
+                    if (
+                        arg in kwargs
+                        # ensure user wants something specific
+                        and kwargs[arg] is not None
+                        # and this is not what we have right now
+                        and kwargs[arg] != net[arg]
+                    ):
                         update_kwargs[arg] = kwargs[arg]
 
                 if update_kwargs: