Files
freebsd_jails/files/jail_create_full.sh
2024-12-26 17:16:58 +01:00

59 lines
1.9 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 releases/$RELEASE|awk '{print $1}')
ZFS_SERVICE="/srv/jails/services"
ZFS_JAIL="/srv/jails/services/$JAIL"
if [ -z "$ZFS_SNAPSHOT" ]
then
echo "Creating SKELETON snapshot"
zfs snapshot $ZFS_SNAPSHOT
fi
if ! [ -d "$ZFS_SERVICE" ]
then
echo "Creating services jail"
zfs create zroot/jails/services
fi
if ! [ -d "$ZFS_JAIL" ]
then
echo "Creating $JAIL jail"
zfs clone $ZFS_SNAPSHOT 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 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