Merge branch 'upstream'
[automated-distro-installer] / fai / config / scripts / DEBIAN / 30-interface
index 34c98e81aa5591b790912bf64a26b1dd84d4f625..5955f7b3b9bdf76efa4ec398f288bac79f398eb1 100755 (executable)
@@ -1,5 +1,8 @@
 #! /bin/bash
 
+# modified from upstream fai example
+error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
+
 netplan_yaml() {
     # network configuration using ubuntu's netplan.io
     local IFNAME="$1"
@@ -66,6 +69,10 @@ newnicnames() {
            break
        fi
     done
+    # This condition is only needed because the nfsroot I use
+    # is based on Jessie, which has an old udev which can't
+    # figure out the persistent interface name used in stretch.
+    if ifclass VM; then NIC1=ens3; return; fi
     if [[ ! $name ]]; then
        echo "$0: error: could not find systemd predictable network name. Using $NIC1."
     fi
@@ -89,16 +96,38 @@ case "$FAI_ACTION" in
         fi
     elif [ -d $target/etc/network/interfaces.d ]; then
         # ifupdown >= 0.7.41 (Debian >= 8, Ubuntu >= 14.04)
-        iface_stanza lo loopback > $target/etc/network/interfaces.d/lo
 
-        if [ -n "$NIC1" -a ! -f $target/etc/NetworkManager/NetworkManager.conf ]; then
-            iface_stanza $NIC1 $METHOD > $target/etc/network/interfaces.d/$NIC1
-        fi
+      if ifclass VM; then
+        # note, this condition would apply to the elif below too,
+        # but I don't specify a static ip in fai, so not bothering
+        cat > $target/etc/network/interfaces <<-EOF
+       # generated by FAI
+       auto lo $NIC1
+       iface lo inet loopback
+       iface $NIC1 inet dhcp
+EOF
+      else
+        cat > $target/etc/network/interfaces <<-EOF
+        # generated by FAI
+        auto lo br0
+        iface lo inet loopback
+        iface $NIC1 inet manual
+        # make a bridge by default so we can have bridged vms.
+        # Some example I read had stp on, but i don't need stp,
+        # and it causes a vm to fail pxe boot, presumably unless
+        # you add some delay.
+        # http://wiki.libvirt.org/page/PXE_boot_%28or_dhcp%29_on_guest_failed
+        iface br0 inet dhcp
+          bridge_ports $NIC1
+          bridge_stp off
+          bridge_maxwait 0
+EOF
+      fi
     else
-        (
-            iface_stanza lo loopback
-            iface_stanza $NIC1 $METHOD
-        ) > $target/etc/network/interfaces
+      (
+        iface_stanza lo loopback
+        iface_stanza $NIC1 $METHOD
+      ) > $target/etc/network/interfaces
     fi
 
     if ! ifclass DHCPC ; then