summaryrefslogtreecommitdiffstats
path: root/autocluster
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2013-03-12 15:22:23 +1100
committerMartin Schwenke <martin@meltin.net>2013-03-12 15:57:47 +1100
commit78728fb1534842d127e9665f4dabee36f0ef215a (patch)
tree7624e5151bd489176d49630333024018feefd705 /autocluster
parent0a6d897bdaf009f6e441dd8cb282624c3e05a975 (diff)
downloadautocluster-78728fb1534842d127e9665f4dabee36f0ef215a.tar.gz
autocluster-78728fb1534842d127e9665f4dabee36f0ef215a.tar.xz
autocluster-78728fb1534842d127e9665f4dabee36f0ef215a.zip
Fix NETWORKS configuration to support non-standard interface names
Signed-off-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'autocluster')
-rwxr-xr-xautocluster59
1 files changed, 48 insertions, 11 deletions
diff --git a/autocluster b/autocluster
index ec4cbdf..06cc14f 100755
--- a/autocluster
+++ b/autocluster
@@ -188,6 +188,7 @@ create_node_COMMON ()
fi
local IPNUM=$(($FIRSTIP + $ip_offset))
+ make_network_map
# Determine base image name. We use $DISK temporarily to allow
# the path to be hacked.
@@ -268,6 +269,40 @@ create_node_null () {
:
}
+# Uses: CLUSTER, NAME, NETWORKS, FIRSTIP, ip_offset
+make_network_map ()
+{
+ network_map="tmp/network_map.$NAME"
+
+ if [ -n "$CLUSTER" ] ; then
+ local md5=$(echo "$CLUSTER" | md5sum)
+ local nh=$(printf "%02x" $ip_offset)
+ local mac_prefix="02:${md5:0:2}:${md5:2:2}:00:${nh}:"
+ else
+ local mac_prefix="02:42:42:00:00:"
+ fi
+
+ local n
+ local count=1
+ for n in $NETWORKS ; do
+ local ch=$(printf "%02x" $count)
+ local mac="${mac_prefix}${ch}"
+
+ set -- ${n//,/ }
+ local ip_bits="$1" ; shift
+ local dev="$1" ; shift
+ local opts="$*"
+
+ local net="${ip_bits%/*}"
+ local netname="acnet_${net//./_}"
+
+ local ip="${net%.*}.${IPNUM}"
+ local mask="255.255.255.0"
+ echo "${netname} ${dev} ${ip} ${mask} ${mac} ${opts}"
+ count=$(($count + 1))
+ done >"$network_map"
+}
+
##############################
hack_nodes_functions=
@@ -517,6 +552,8 @@ create_base()
setup_timezone
+ make_network_map
+
echo "Creating kickstart file from template"
substitute_vars "$KICKSTART" "tmp/ks.cfg"
@@ -599,15 +636,16 @@ EOF
###############################
# boot the base disk
boot_base() {
- CLUSTER="$1"
+ rm -rf tmp
+ mkdir -p tmp
NAME="$BASENAME"
DISK="${VIRTBASE}/${NAME}.${BASE_FORMAT}"
- rm -rf tmp
- mkdir -p tmp
-
IPNUM=$FIRSTIP
+
+ make_network_map
+
CLUSTER="base"
diskimage mount $DISK
@@ -739,10 +777,8 @@ setup_network()
diskimage rm_rf "/etc/udev/rules.d/70-persistent-net.rules"
echo "Setting up network interfaces: "
- local n
- for n in $NETWORKS ; do
- local dev="${n#*,}" # Strip address, comma
- dev="${dev%,*}" # Strip comma, interface
+ local netname dev ip mask mac opts
+ while read netname dev ip mask mac opts; do
echo " $dev"
cat <<EOF | \
diskimage substitute_vars \
@@ -750,10 +786,11 @@ setup_network()
DEVICE=$dev
ONBOOT=yes
TYPE=Ethernet
-IPADDR=${n%.*}.@@IPNUM@@
-NETMASK=255.255.255.0
+IPADDR=$ip
+NETMASK=$mask
+HWADDR=$mac
EOF
- done
+ done <"$network_map"
}
register_hook setup_base_hooks setup_network