Fix OVS bridge ifup

PROD-34658

Change-Id: I4a467b5e09495c3ad47df4a105ee9375d7e0591f
diff --git a/linux/files/ovs_bridge b/linux/files/ovs_bridge
index e51b676..fec5e16 100644
--- a/linux/files/ovs_bridge
+++ b/linux/files/ovs_bridge
@@ -1,4 +1,4 @@
-auto {{ bridge_name }}
+allow-ovs {{ bridge_name }}
 iface {{ bridge_name }} inet {{ bridge.get('proto', 'static' if bridge.address is defined else 'manual') }}
 mtu {{ bridge.get('mtu', '1500') }}
 {%- if bridge.address is defined %}
diff --git a/linux/network/dpdk.sls b/linux/network/dpdk.sls
index 7c76803..821278c 100644
--- a/linux/network/dpdk.sls
+++ b/linux/network/dpdk.sls
@@ -162,7 +162,7 @@
   file.managed:
     - name: /etc/network/interfaces.u/ifcfg-{{ interface_name }}
     - contents: |
-        auto {{ interface_name }}
+        allow-ovs {{ interface_name }}
         iface {{ interface_name }} inet static
         address {{ interface.address }}
         netmask {{ interface.netmask }}
diff --git a/linux/network/interface.sls b/linux/network/interface.sls
index 4a1b0b2..5fe6a6f 100644
--- a/linux/network/interface.sls
+++ b/linux/network/interface.sls
@@ -27,6 +27,19 @@
   - pkgs: {{ network.bridge_pkgs }}
   {%- endif %}
 
+  {%- if network.bridge == 'openvswitch' and grains.os_family == 'Debian' %}
+
+{# Debian/Ubuntu won't automatically ifup OVS bridges, workaround #}
+/etc/systemd/system/networking.service.d/ovs_workaround.conf:
+  file.managed:
+    - makedirs: true
+    - require:
+      - pkg: linux_network_bridge_pkgs
+    - contents: |
+        [Service]
+        ExecStart=/sbin/ifup --allow=ovs -a --read-environment
+  {%- endif %}
+
 {%- endif %}
 
 {%- for f in network.get('concat_iface_files', []) %}