ulthar.xyz > Repos

dotfiles

Seven years worth of accumulated configuration cruft
About Files Commits git clone https://ulthar.xyz/repos/dotfiles/dotfiles.git

dotfiles/scripts/.local/bin/newjail

Download raw file: scripts/.local/bin/newjail

#!/bin/sh
# Automate the process of creating a new jail

[ -n "$1" ] || {
        printf "Create a new jail.  Usage: add-jail.sh [jailname]\n"
        exit 1
}

[ "$(uname)" = "FreeBSD" ] || {
        printf "This script is FreeBSD-specific.\n"
        exit 1
}

[ "$(whoami)" = "root" ] || {
        printf "This script must be run as root.\n"
        exit 1
}

df | grep ^zroot >/dev/null || {
        printf "This script assumes your root parition uses ZFS.\n"
        exit 1
}

jail="$1"
file=ftp.freebsd.org/pub/FreeBSD/releases/"$(uname -p)"/"$(uname -r)"/base.txz

# If this script is being run on my server, use the storage/jails dataset,
# otherwise use zroot/jails, creating it if it doesn't exist.
if [ "$(hostname)" = "monolith" ]; then
        dataset="storage/jails/$jail"
        mountpt="/storage/jails/$jail"
else
        zfs list | grep ^zroot/jails >/dev/null || zfs create zroot/jails
        dataset="zroot/jails/$jail"
        mountpt="/jails/$jail"
fi

zfs create "$dataset"
fetch "$file" -o - | tar -xf - -C "$mountpt"
freebsd-update -b "$mountpt" IDS

# Jails don't have home directories for some reason
mkdir -v "$mountpt"/usr/home/
ln -vs /usr/home /storage/jails/"$jail"/home

# Copy some stuff over
cp -vf /etc/localtime "$mountpt"/etc/localtime
cp -vf /etc/csh.cshrc "$mountpt"/root/.cshrc

# We don't need sendmail running
echo 'sendmail_enable="NONE"' >"$mountpt"/etc/rc.conf

cat <<- EOF
======> Completed
  If freebsd-update detected errors, remove the $dataset
  dataset and try again. Otherwise you should now:
    [ ] Add the $jail entry to /etc/jail.conf
    [ ] Add a table to /etc/hosts
    [ ] Add rules to /etc/pf.conf or /usr/local/etc/haproxy.conf
    [ ] Append $jail to jail_list in /etc/rc.conf
    [ ] Restart the jail service
    [ ] Set a root password
EOF

Generated 2025-03-07 15:24:27 -0700 by RepoRat