Shell Script Cloning Solaris Zones
Dec. 23rd, 2012 12:43 amThis script was written on Solaris 11 running inside VirtualBox.
( Debugging )
set -Cex ROOT=/opt/euromake DEFROUTER=10.0.2.2 NETWORK=17 MIN=10 MAX=99 cd $ROOT mkdir -p vacant for p in $(ls vacant); do test -d "vacant/$p" if echo $$ >"vacant/$p/lock"; then POOL=$p trap 'rm -f "vacant/$POOL/lock"' INT TERM EXIT break fi done test "$POOL" -ge "$MIN" test "$POOL" -le "$MAX" read ZONE <vacant/$POOL/next test "$ZONE" -ge "$MIN" test "$ZONE" -le "$MAX" ZONENAME=$NETWORK.$POOL.$ZONE ZONEPATH=/zones/clones/$NETWORK/$POOL/$ZONE # Comment at your own risk! echo \ zonecfg -z $ZONENAME <<-COMMIT create set zonepath=$ZONEPATH select anet linkname=net0 set defrouter=$DEFROUTER set allowed-address=10.$ZONENAME COMMIT echo \ zoneadm -z $ZONENAME clone origin # from /zones/origin NEXT=$(($ZONE + 1)) if [ "$NEXT" -le "$MAX" ]; then echo $NEXT >|vacant/$POOL/next rm -f vacant/$POOL/lock else mkdir -p full test ! -e "full/$POOL" mv vacant/$POOL full fi trap - INT TERM EXIT
( Debugging )