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