/etc/init/cloud-init-blocknet.conf is in cloud-init 0.7.9-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | # cloud-init-blocknet
# the purpose of this job is
# * to block networking from coming up until cloud-init-nonet has run
# * timeout if they all do not come up in a reasonable amount of time
description "block networking until cloud-init-local"
start on (starting network-interface
or starting network-manager
or starting networking)
stop on stopped cloud-init-local
instance $JOB${INTERFACE:+/}${INTERFACE:-}
export INTERFACE
task
script
set +e # you cannot trap TERM reliably with 'set -e'
SLEEP_CHILD=""
static_network_up() {
local emitted="/run/network/static-network-up-emitted"
# /run/network/static-network-up-emitted is written by
# upstart (via /etc/network/if-up.d/upstart). its presense would
# indicate that static-network-up has already fired.
[ -e "$emitted" -o -e "/var/$emitted" ]
}
msg() {
local uptime="" idle="" msg=""
if [ -r /proc/uptime ]; then
read uptime idle < /proc/uptime
fi
msg="${UPSTART_INSTANCE}${uptime:+[${uptime}]}: $*"
echo "$msg"
}
handle_sigterm() {
# if we received sigterm and static networking is up then it probably
# came from upstart as a result of 'stop on static-network-up'
msg "got sigterm"
if [ -n "$SLEEP_CHILD" ]; then
if ! kill $SLEEP_CHILD 2>/dev/null; then
[ ! -d "/proc/$SLEEP_CHILD" ] ||
msg "hm.. failed to kill sleep pid $SLEEP_CHILD"
fi
fi
msg "stopped"
exit 0
}
dowait() {
msg "blocking $1 seconds"
# all this 'exec -a' does is get me a nicely named process in 'ps'
# ie, 'sleep-block-network-interface.eth1'
if [ -x /bin/bash ]; then
bash -c 'exec -a sleep-block-$1 sleep $2' -- "$UPSTART_INSTANCE" "$1" &
else
sleep "$1" &
fi
SLEEP_CHILD=$!
msg "sleepchild=$SLEEP_CHILD"
wait $SLEEP_CHILD
SLEEP_CHILD=""
}
trap handle_sigterm TERM
if [ -n "$INTERFACE" -a "${INTERFACE#lo}" != "${INTERFACE}" ]; then
msg "ignoring interface ${INTERFACE}";
exit 0;
fi
# static_network_up already occurred
static_network_up && { msg "static_network_up already"; exit 0; }
# local-finished cloud-init-local success or failure
lfin="/run/cloud-init/local-finished"
disable="/etc/cloud/no-blocknet"
[ -f "$lfin" ] && { msg "$lfin found"; exit 0; }
[ -f "$disable" ] && { msg "$disable found"; exit 0; }
dowait 120
msg "gave up waiting for $lfin"
exit 1
end script
|