diff --git a/compute.yaml b/compute.yaml
index ae02fef549..145b61c3f5 100644
--- a/compute.yaml
+++ b/compute.yaml
@@ -246,6 +246,19 @@ resources:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
 
+  NetworkConfig:
+    type: OS::TripleO::Net::SoftwareConfig
+
+  NetworkDeployment:
+    type: OS::TripleO::SoftwareDeployment
+    properties:
+      signal_transport: NO_SIGNAL
+      config: {get_attr: [NetworkConfig, config_id]}
+      server: {get_resource: NovaCompute}
+      input_values:
+        bridge_name: {get_param: NeutronPhysicalBridge}
+        interface_name: {get_param: NeutronPublicInterface}
+
   NovaComputeConfig:
     type: OS::TripleO::Compute::SoftwareConfig
 
diff --git a/net-config-bond.yaml b/net-config-bond.yaml
new file mode 100644
index 0000000000..3518dbae64
--- /dev/null
+++ b/net-config-bond.yaml
@@ -0,0 +1,44 @@
+heat_template_version: 2014-10-16
+
+description: >
+  Software Config to drive os-net-config with 2 bonded nics on a bridge.
+
+resources:
+  OsNetConfigImpl:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        os_net_config:
+          network_config:
+            -
+              type: ovs_bridge
+              name: {get_input: bridge_name}
+              use_dhcp: true
+              # Can't do this yet: https://bugs.launchpad.net/heat/+bug/1344284
+              #ovs_extra:
+              #  - list_join:
+              #    - ' '
+              #    - - br-set-external-id
+              #      - {get_input: bridge_name}
+              #      - bridge-id
+              #      - {get_input: bridge_name}
+              members:
+                -
+                  type: ovs_bond
+                  name: bond1
+                  use_dhcp: true
+                  members:
+                    # os-net-config translates nic1 => em1 (for example)
+                    -
+                      type: interface
+                      name: nic1
+                    -
+                      type: interface
+                      name: nic2
+
+outputs:
+  config_id:
+    description: The ID of the OsNetConfigImpl resource.
+    value:
+      {get_resource: OsNetConfigImpl}
diff --git a/net-config-bridge.yaml b/net-config-bridge.yaml
new file mode 100644
index 0000000000..d1faa5df95
--- /dev/null
+++ b/net-config-bridge.yaml
@@ -0,0 +1,37 @@
+heat_template_version: 2014-10-16
+
+description: >
+  Software Config to drive os-net-config for a simple bridge.
+
+resources:
+  OsNetConfigImpl:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        os_net_config:
+          network_config:
+            -
+              type: ovs_bridge
+              name: {get_input: bridge_name}
+              use_dhcp: true
+              # Can't do this yet: https://bugs.launchpad.net/heat/+bug/1344284
+              #ovs_extra:
+              #  - list_join:
+              #    - ' '
+              #    - - br-set-external-id
+              #      - {get_input: bridge_name}
+              #      - bridge-id
+              #      - {get_input: bridge_name}
+              members:
+                -
+                  type: interface
+                  name: {get_input: interface_name}
+                  # force the MAC address of the bridge to this interface
+                  primary: true
+
+outputs:
+  config_id:
+    description: The ID of the OsNetConfigImpl resource.
+    value:
+      {get_resource: OsNetConfigImpl}
diff --git a/net-config-noop.yaml b/net-config-noop.yaml
new file mode 100644
index 0000000000..a3b1d1afae
--- /dev/null
+++ b/net-config-noop.yaml
@@ -0,0 +1,18 @@
+heat_template_version: 2014-10-16
+
+description: >
+  Software Config to no-op for os-net-config. Using this will allow you
+  to use the parameter driven (init-neutron-ovs) configuration instead.
+
+resources:
+  OsNetConfigImpl:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+
+outputs:
+  config_id:
+    description: The ID of the OsNetConfigImpl resource.
+    value:
+      {get_resource: OsNetConfigImpl}
diff --git a/overcloud-resource-registry.yaml b/overcloud-resource-registry.yaml
index 4ac404ee3f..476758b01b 100644
--- a/overcloud-resource-registry.yaml
+++ b/overcloud-resource-registry.yaml
@@ -3,5 +3,6 @@ resource_registry:
   OS::TripleO::Compute: compute.yaml
   OS::TripleO::Compute::SoftwareConfig: compute-config.yaml
   OS::TripleO::SoftwareDeployment: OS::Heat::StructuredDeployment
+  OS::TripleO::Net::SoftwareConfig: net-config-noop.yaml
   OS::TripleO::Controller: controller.yaml
   OS::TripleO::ObjectStorage: swift-storage.yaml