diff options
author | Martin Schwenke <martin@meltin.net> | 2013-03-12 15:22:23 +1100 |
---|---|---|
committer | Martin Schwenke <martin@meltin.net> | 2013-03-12 15:57:47 +1100 |
commit | 78728fb1534842d127e9665f4dabee36f0ef215a (patch) | |
tree | 7624e5151bd489176d49630333024018feefd705 /autocluster | |
parent | 0a6d897bdaf009f6e441dd8cb282624c3e05a975 (diff) | |
download | autocluster-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-x | autocluster | 59 |
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 |