59 lines
2.0 KiB
Bash
59 lines
2.0 KiB
Bash
#!/bin/sh
|
|
if [ $# -eq 0 ]
|
|
then
|
|
echo "Use: $0 jailName"
|
|
exit 0
|
|
else
|
|
#Calculate next ip
|
|
grep jid /etc/jail.conf | grep -v \# | tr -d \; | awk '{print $3}' > $PWD/jid.tmp
|
|
JAILID=$(sort -hr jid.tmp|head -1)
|
|
JAILID=$((JAILID+1))
|
|
JAIL="$1"
|
|
RELEASE="14.1-RELEASE"
|
|
JAILMOUNTPOINT="/usr/local/jails"
|
|
JAILFSTAB="/usr/local/jails/jail.fstab.d/"
|
|
JAILCONFIG="/etc/jail.conf"
|
|
ZFS_SNAPSHOT=$(zfs list -t snapshot|grep skeleton-$RELEASE@base|awk '{print $1}')
|
|
ZFS_SERVICE="/srv/jails/services"
|
|
ZFS_SKELETON="/srv/jails/services/$JAIL"
|
|
if [ -z "$ZFS_SNAPSHOT" ]
|
|
then
|
|
echo "Creating SKELETON snapshot"
|
|
zfs snapshot zroot/jails/templates/skeleton-$RELEASE@base
|
|
fi
|
|
if ! [ -d "$ZFS_SERVICE" ]
|
|
then
|
|
echo "Creating services jail"
|
|
zfs create zroot/jails/services
|
|
fi
|
|
if ! [ -d "$ZFS_SKELETON" ]
|
|
then
|
|
echo "Creating $JAIL jail"
|
|
zfs clone zroot/jails/templates/skeleton-$RELEASE@base zroot/jails/services/$JAIL
|
|
else
|
|
echo "Jail $JAIL already exist, try to start or restart it"
|
|
break
|
|
fi
|
|
|
|
echo "hostname=\"$JAIL\"" > /srv/jails/services/$JAIL/etc/rc.conf
|
|
|
|
#Create mountpoint
|
|
if [ ! -d $JAILMOUNTPOINT/$JAIL ]
|
|
then
|
|
mkdir -p $JAILMOUNTPOINT/$JAIL
|
|
fi
|
|
if [ ! -f $JAILFSTAB/$JAIL.fstab ]
|
|
then
|
|
touch $JAILFSTAB/$JAIL.fstab
|
|
fi
|
|
#checking ip
|
|
echo "/srv/jails/templates/base-$RELEASE $JAILMOUNTPOINT/$JAIL/ nullfs ro 0 0" >> $JAILFSTAB/$JAIL.fstab
|
|
echo "/srv/jails/services/$JAIL $JAILMOUNTPOINT/$JAIL/skeleton nullfs rw 0 0" >> $JAILFSTAB/$JAIL.fstab
|
|
echo "$JAIL {" >> $JAILCONFIG
|
|
echo "# jid = ${JAILID};" >> $JAILCONFIG
|
|
echo '# exec.start = "/usr/local/etc/rc.d/service onestart";' >> $JAILCONFIG
|
|
echo '# exec.stop = "/usr/local/etc/rc.d/service onestop";' >> $JAILCONFIG
|
|
echo ' allow.raw_sockets = "true";' >> $JAILCONFIG
|
|
echo " \$ip = ${JAILID};" >> $JAILCONFIG
|
|
echo "}" >> $JAILCONFIG
|
|
fi |