#!/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)