--- /dev/null
+# from busters's ifupdown 0.8.32 package (as of May 2018)
+[Unit]
+Description=Wait for network to be configured by ifupdown
+DefaultDependencies=no
+Before=network-online.target
+ConditionFileIsExecutable=/sbin/ifup
+
+[Service]
+Type=oneshot
+ExecStart=/lib/ifupdown/wait-online.sh
+RemainAfterExit=yes
+
+[Install]
+WantedBy=network-online.target
--- /dev/null
+#!/bin/sh
+# from busters's ifupdown 0.8.32 package (as of May 2018)
+set -e
+
+WAIT_ONLINE_METHOD="ifup"
+WAIT_ONLINE_IFACE=""
+WAIT_ONLINE_ADDRESS=""
+WAIT_ONLINE_TIMEOUT=300
+
+[ -f /etc/default/networking ] && . /etc/default/networking
+
+case "$WAIT_ONLINE_METHOD" in
+route)
+ [ -n "$WAIT_ONLINE_ADDRESS" ] || WAIT_ONLINE_ADDRESS=default
+ (/usr/bin/timeout "$WAIT_ONLINE_TIMEOUT" /bin/ip mon r & /bin/ip -4 r s; /bin/ip -6 r s) | /bin/grep -q "^$WAIT_ONLINE_ADDRESS\>"
+ ;;
+
+ping)
+ if [ -z "$WAIT_ONLINE_ADDRESS" ]; then
+ echo "No WAIT_ONLINE_ADDRESS specified" >&2
+ exit 1
+ fi
+ /bin/ping -q -c 1 -w "WAIT_ONLINE_TIMEOUT" "$WAIT_ONLINE_ADDRESS" >/dev/null
+ ;;
+
+ping6)
+ /bin/ping6 -q -c 1 -w "WAIT_ONLINE_TIMEOUT" "$WAIT_ONLINE_ADDRESS" >/dev/null
+ ;;
+
+ifup|iface|interface)
+ up=false
+ if [ -z "$WAIT_ONLINE_IFACE" ]; then
+ auto_list="$(/sbin/ifquery -X lo --list)"
+ hotplug_list="$(/sbin/ifquery -X lo --allow=hotplug --list)"
+ if [ -n "$auto_list" ]; then
+ for i in $(seq 1 $WAIT_ONLINE_TIMEOUT); do
+ up=true
+ for iface in $auto_list; do
+ if ! /sbin/ifquery --state $iface >/dev/null; then
+ up=false
+ break
+ fi
+ done
+ if [ $up = true ]; then
+ break
+ fi
+ sleep 1
+ done
+ elif [ -n "$(/sbin/ifquery --allow=hotplug --list)" ]; then
+ for i in $(seq 1 $WAIT_ONLINE_TIMEOUT); do
+ if [ -n "$(/sbin/ifquery -X lo --allow=hotplug --state)" ]; then
+ up=true
+ break
+ fi
+ sleep 1
+ done
+ else
+ exit 0
+ fi
+ else
+ for i in $(seq 1 $WAIT_ONLINE_TIMEOUT); do
+ if [ -n "$(/sbin/ifquery --state $WAIT_ONLINE_IFACE)" ]; then
+ up=true
+ break
+ fi
+ sleep 1
+ done
+ fi
+ [ $up = true ] || exit 1
+ ;;
+
+no|none)
+ exit 0
+ ;;
+
+*)
+ echo "Unknown wait method $WAIT_ONLINE_METHOD" >&2
+ exit 1
+ ;;
+esac
--- /dev/null
+class stretch::network_online {
+ if versioncmp($::lsbmajdistrelease, '9') <= 0 {
+
+ exec { 'systemctl enable ifupdown-wait-online.service':
+ refreshonly => true,
+ }
+
+ file { '/lib/ifupdown/wait-online.sh':
+ mode => '0555',
+ source => 'puppet:///modules/stretch/wait-online.sh',
+ }
+ file { '/lib/systemd/system/ifupdown-wait-online.service':
+ mode => '0555',
+ source => 'puppet:///modules/stretch/ifupdown-wait-online.service',
+ notify => Exec['systemctl enable ifupdown-wait-online.service'],
+ }
+ }
+}
+