#!/bin/bash
set -e
for i in $(seq 1 100); do
#Creating interface for the zone
dladm create-vnic -l e1000g1 hnet$i
#Creating initial config
TEMPFILE=$(mktemp /tmp/XXXXXXXXXXXXXXXXXX)
cat > $TEMPFILE <<EOF
create -b
set zonepath=/zones/h$i
set autoboot=true
set ip-type=exclusive
add net
set physical=hnet$i
end
add capped-memory
set physical=2G
end
add rctl
set name=zone.max-swap
add value (priv=privileged,limit=2147483648,action=deny)
end
add rctl
set name=zone.max-locked-memory
add value (priv=privileged,limit=536870912,action=deny)
end
EOF
zonecfg -z h$i -f $TEMPFILE
zfs send -R data/zones/h0@initial | zfs recv -F data/zones/h$i
# Zone tools should know that zone is in installed state, not configured
# Also during installation zoneadm assigns uuid to zone (last field). We do this manually.
uuid=$(uuidgen)
gsed -i -e "/^h${i}:/ s/\$/${uuid}/" -e "/^h${i}:/ s/configured/installed/" /etc/zones/index
zoneadm -z h$i mount
# We known that golden image ip address ends in 254 and change it
addr=$((1+$i))
sed -i -e "s:hnet0:hnet$i:g" -e "s:\.254:.$addr:g" /zones/h$i/root/etc/ipadm/ipadm.conf
zoneadm -z h$i unmount
zfs destroy data/zones/h$i@initial
rm $TEMPFILE
zoneadm -z h$i boot
done
четверг, 30 августа 2018 г.
Quest: creating one hundred zones
Well, I need to create about one hundred zones once again.
You could probably use ansible for this, but an old-fashioned man will do everything in shell.
So: we have one "golden image" and have to create 100 zones like it.
We could clone it, but with clones you receive wonderful issue - beadm activate fails in zone.
So we create zones and do send/receive manually.
This looks like this:
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий