Fix assembly of /etc/network/interfaces
Include the other interface configs from /etc/network/interfaces.d/ after lo and existing eth*, as was initially intended. Also separate out the assembly code into its own script, as this is done both on boot via eth-eni-setup and on hotplug events by etc-eni-hotplug. Resolves #91
This commit is contained in:
parent
9ddcac75c3
commit
24bf01621f
@ -245,6 +245,9 @@ setup_networking() {
|
|||||||
"$SETUP/etc/interfaces.d/"*
|
"$SETUP/etc/interfaces.d/"*
|
||||||
cat "$IFACE_CFG.d/lo" "$IFACE_CFG.d/eth0" > "$IFACE_CFG"
|
cat "$IFACE_CFG.d/lo" "$IFACE_CFG.d/eth0" > "$IFACE_CFG"
|
||||||
|
|
||||||
|
install -o root -g root -Dm755 -t "$TARGET/etc/network" \
|
||||||
|
"$SETUP/assemble-interfaces"
|
||||||
|
|
||||||
# install ucdhcp hooks for EC2 ENI IPv6 and secondary IPv4
|
# install ucdhcp hooks for EC2 ENI IPv6 and secondary IPv4
|
||||||
install -o root -g root -Dm755 -t "$TARGET/usr/share/udhcpc" \
|
install -o root -g root -Dm755 -t "$TARGET/usr/share/udhcpc" \
|
||||||
"$SETUP/eth-eni-hook"
|
"$SETUP/eth-eni-hook"
|
||||||
|
42
scripts/setup-ami.d/assemble-interfaces
Executable file
42
scripts/setup-ami.d/assemble-interfaces
Executable file
@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# vim: set ts=4 et:
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
IFACE_CFG=/etc/network/interfaces
|
||||||
|
IFACE_DIR="${IFACE_CFG}.d"
|
||||||
|
|
||||||
|
cd "$IFACE_DIR"
|
||||||
|
|
||||||
|
cat > "$IFACE_CFG.new" <<EOT
|
||||||
|
# NOTE: /etc/network/assemble-interfaces rewrites this file. Edit files in
|
||||||
|
# /etc/network/interfaces.d/ to persist any customizations.
|
||||||
|
|
||||||
|
EOT
|
||||||
|
|
||||||
|
# loopback first
|
||||||
|
cat lo >> "$IFACE_CFG.new"
|
||||||
|
|
||||||
|
# existing eths
|
||||||
|
for i in /sys/class/net/eth*; do
|
||||||
|
IFACE="$(basename "$i")"
|
||||||
|
[ ! -f "$IFACE" ] && sed -e "s/%%/$IFACE/g" DEFAULT > "$IFACE"
|
||||||
|
cat "$IFACE" >> "$IFACE_CFG.new"
|
||||||
|
done
|
||||||
|
|
||||||
|
# all the rest
|
||||||
|
for i in "$IFACE_DIR"/*; do
|
||||||
|
IFACE="$(basename "$i")"
|
||||||
|
case $IFACE in
|
||||||
|
DEFAULT|lo|eth*)
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
cat "$IFACE" >> "$IFACE_CFG.new"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# install new interfaces config
|
||||||
|
cp -a "$IFACE_CFG" "$IFACE_CFG.bak"
|
||||||
|
mv "$IFACE_CFG.new" "$IFACE_CFG"
|
@ -1,6 +1,3 @@
|
|||||||
# NOTE: /lib/mdev/eth-eni-hotplug rewrites this file. Edit files in
|
|
||||||
# /etc/network/interfaces.d/ to persist any customizations.
|
|
||||||
|
|
||||||
auto lo
|
auto lo
|
||||||
iface lo inet loopback
|
iface lo inet loopback
|
||||||
|
|
||||||
|
@ -23,7 +23,6 @@ RTABLE="${MDEV#eth}"
|
|||||||
let RTABLE+=1000
|
let RTABLE+=1000
|
||||||
|
|
||||||
IFACE_CFG=/etc/network/interfaces
|
IFACE_CFG=/etc/network/interfaces
|
||||||
IFACE_DIR="${IFACE_CFG}.d"
|
|
||||||
|
|
||||||
ip() {
|
ip() {
|
||||||
v=-4
|
v=-4
|
||||||
@ -42,15 +41,7 @@ ip() {
|
|||||||
|
|
||||||
assemble_interfaces() {
|
assemble_interfaces() {
|
||||||
log info "Rebuilding $IFACE_CFG"
|
log info "Rebuilding $IFACE_CFG"
|
||||||
cd "$IFACE_DIR"
|
/etc/network/assemble-interfaces
|
||||||
cat lo > "$IFACE_CFG.new"
|
|
||||||
for i in /sys/class/net/eth*; do
|
|
||||||
IFACE="$(basename "$i")"
|
|
||||||
[ ! -f "$IFACE" ] && sed -e "s/%%/$IFACE/g" DEFAULT > "$IFACE"
|
|
||||||
cat "$IFACE" >> "$IFACE_CFG.new"
|
|
||||||
done
|
|
||||||
cp -a "$IFACE_CFG" "$IFACE_CFG.bak"
|
|
||||||
mv "$IFACE_CFG.new" "$IFACE_CFG"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
interface_up() {
|
interface_up() {
|
||||||
|
@ -2,35 +2,15 @@
|
|||||||
|
|
||||||
description="Sets up interfaces for attached Elastic Network Interfaces"
|
description="Sets up interfaces for attached Elastic Network Interfaces"
|
||||||
|
|
||||||
IFACE_CFG=/etc/network/interfaces
|
|
||||||
|
|
||||||
depend() {
|
depend() {
|
||||||
before net
|
before net
|
||||||
need sysfs
|
need sysfs
|
||||||
}
|
}
|
||||||
|
|
||||||
eni_eths() {
|
|
||||||
local iface
|
|
||||||
for iface in /sys/class/net/eth*; do
|
|
||||||
echo "${iface##*/}"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
local iface
|
local iface
|
||||||
|
|
||||||
ebegin "Setting up interfaces for attached ENIs"
|
ebegin "Setting up interfaces for attached ENIs"
|
||||||
|
/etc/network/assemble-interfaces
|
||||||
cat "$IFACE_CFG.d/lo" > "$IFACE_CFG.new"
|
|
||||||
|
|
||||||
for iface in $(eni_eths); do
|
|
||||||
[ -f "$IFACE_CFG.d/$iface" ] ||
|
|
||||||
sed -e "s/%%/$iface/g" "$IFACE_CFG.d/DEFAULT" > "$IFACE_CFG.d/$iface"
|
|
||||||
cat "$IFACE_CFG.d/$iface" >> "$IFACE_CFG.new"
|
|
||||||
einfo "$iface configured"
|
|
||||||
done
|
|
||||||
|
|
||||||
mv "$IFACE_CFG.new" "$IFACE_CFG"
|
|
||||||
|
|
||||||
eend "$?"
|
eend "$?"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user