#!/bin/sh # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html #------------------------------------------------------------------------------- # Sample xCAT post script for configuring hfi settings and some conventions. # This scripts works for both diskfull installs, diskless boots on AIX or Linux. # Input: # IP address: Each hfi interface should be assigned its hostname and IP address. # hostname should be resolable from either /etc/hosts or name # resolution, with format: -hfx # netmask: Netmask is hardcoded in this script. You have to manually modify it # if it doesn't meet your requirement. #------------------------------------------------------------------------------- PLTFRM=`uname` NETMASK=255.0.0.0 RETURNVAL=0 # bond-mld binary is shipped seperately, admin should adjust the following PATH # to where bond-mld binary is. PATH=$PATH:/usr/local/sbin/ export PATH name=`echo $NODE | awk -F-hf '{print $1}'` if [ -z $name ] then name=$NODE fi if [[ $PLTFRM != AIX ]] && [[ $PLTFRM != aix ]] then # A difference between service node and compute node is that service node is booted from # ethernet, all the HFI interfaces should be configured. Compute node is booted from hf0 # so hf0 on compute node should not be re-configured on compute node. if [[ $NTYPE = service ]] then CLIENT_IP=`ping -c 3 $name-hf0 -I hf0 2>/dev/null | grep "data" | sed 's/.* (\([0-9.]*\)).*/\1/' | uniq 2>&1` if [ -n "$CLIENT_IP" ] then echo "DEVICE=hf0 NM_CONTROLLED=yes IPADDR=$CLIENT_IP NETMASK=$NETMASK ONBOOT=yes " >/etc/sysconfig/network-scripts/ifcfg-hf0 ifdown hf0 ifup hf0 else logger -t xcat -p local4.err "confighfi: cannot resolve hostname $name-hf0" RETURNVAL=-1 fi elif [[ -z "$NTYPE" ]] then logger -t xcat -p local4.err "confighfi: cannot read node type definition" RETURNVAL=-1 fi # Configure hf0-hf interfaces one by one. for i in 1 2 3 4 5 6 7 do CLIENT_IP=`ping -c 3 $name-hf$i -I hf$i 2>/dev/null | grep "data" | sed 's/.* (\([0-9.]*\)).*/\1/' | uniq 2>&1` if [ -n "$CLIENT_IP" ] then echo "DEVICE=hf$i NM_CONTROLLED=yes IPADDR=$CLIENT_IP NETMASK=$NETMASK ONBOOT=yes " >/etc/sysconfig/network-scripts/ifcfg-hf$i ifdown hf$i ifup hf$i else logger -t xcat -p local4.err "confighfi: cannot resolve hostname $name-hf$i" RETURNVAL=-1 fi done # Configure bond0 on Linux if lsmod | grep bonding then rmmod bonding fi modprobe bonding mode=multi-link miimon=100 xmit_hash_policy=layer3+4 CLIENT_IP=`ping -c 3 $name-bond0 -I bond0 2>/dev/null | grep "data" | sed 's/.* (\([0-9.]*\)).*/\1/' | uniq 2>&1` if [ -n "$CLIENT_IP" ] then echo "DEVICE=bond0 NM_CONTROLLED=yes IPADDR=$CLIENT_IP NETMASK=$NETMASK ONBOOT=yes " >/etc/sysconfig/network-scripts/ifcfg-bond0 fi if [[ $NTYPE != service ]] then if echo $MASTER | egrep '^([0-9]+.){3}[0-9]+$' then XCATMASTER=`grep "$MASTER " /etc/hosts | grep -v "^#" | awk '{print $2}' | awk -F '.' '{print $1}' | sed 's/-hf.*//g'` GATEWAY_IP=`ping -c 3 $XCATMASTER-bond0 -I hf0 2>/dev/null | grep "data" | sed 's/.* (\([0-9.]*\)).*/\1/' | uniq 2>&1` elif [ -n "$MASTER" ] then XCATMASTER=`echo $MASTER | awk -F-hf '{print $1}'` GATEWAY_IP=`ping -c 3 $XCATMASTER-bond0 -I hf0 2>/dev/null | grep "data" | sed 's/.* (\([0-9.]*\)).*/\1/' | uniq 2>&1` fi if [ -n "$GATEWAY_IP" ] then sed -i "/GATEWAY.*/d" /etc/sysconfig/network echo "GATEWAY=$GATEWAY_IP" >> /etc/sysconfig/network fi fi x=0 while [ $x -le $i ]; do ip link set dev hf${x} down sleep 2 echo +hf${x} > /sys/class/net/bond0/bonding/slaves x=$((x+1)) done ip link set dev bond0 mtu 65536 ifdown bond0 ifup bond0 bond-mld > m.out 2>&1 & else # Configurartion for AIX if [[ $NTYPE = service ]] then CLIENT_IP=`ping -q -n -c 1 -w 1 $name-hf0 | grep PING |awk '{print $3}' | sed 's/(\(.*\)):/\1/' ` if [ -n "$CLIENT_IP" ] then mkhfi -i hf0 -a $CLIENT_IP -m $NETMASK else logger -t xcat -p local4.err "confighfi: cannot resolve hostname $name-hf0" RETURNVAL=-1 fi elif [[ -z "$NTYPE" ]] then logger -t xcat -p local4.err "confighfi: cannot read node type definition" RETURNVAL=-1 fi for i in 1 2 3 do CLIENT_IP=`ping -q -n -c 1 -w 1 $name-hf$i | grep PING |awk '{print $3}' | sed 's/(\(.*\)):/\1/' ` if [ -n "$CLIENT_IP" ] then mkhfi -i hf$i -a $CLIENT_IP -m $NETMASK else logger -t xcat -p local4.err "confighfi: cannot resolve hostname $name-hf$i" RETURNVAL=-1 fi done # Configure ml0 for AIX. CLIENT_IP=`ping -q -n -c 1 -w 1 $name-ml0 | grep PING |awk '{print $3}' | sed 's/(\(.*\)):/\1/' ` if [ -n "$CLIENT_IP" ] then #Check whether the mlt0 is available `lsdev -C | grep mlt0 | grep Available 2>&1 >/dev/null` chdev -l ml0 -a state=detach # Reconfig ml0 since HFx are configured after ml0 is available rmdev -l mlt0 mkdev -l mlt0 sleep 2 chdev -l ml0 -a netaddr=$CLIENT_IP -a netmask=$NETMASK -a state=up else logger -t xcat -p local4.err "confighfi: cannot resolve hostname $name-ml0" RETURNVAL=-1 fi fi exit $RETURNVAL