machine_setup/ansible/roles/jail/templates/new_jail.bash.j2
2024-06-30 00:56:32 -04:00

60 lines
1.5 KiB
Django/Jinja

#!/usr/bin/env bash
#
# Create a new jail
set -euo pipefail
IFS=$'\n\t'
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
: ${JAIL_MOUNTPOINT:="{{ jail_zfs_dataset_mountpoint }}"}
function die {
echo >&2 "$@"
exit 1
}
[ "$#" -eq 2 ] || die "1 argument required, $# provided"
JAIL_NAME="$2"
export DESTDIR="${JAIL_MOUNTPOINT}/$JAIL_NAME"
function by_src {
cd /usr/src
make -j 16 buildworld
make installworld DESTDIR=$DESTDIR
make distribution DESTDIR=$DESTDIR
}
function by_bin {
DESTRELEASE=13.2-RELEASE
DESTARCH=`uname -m`
SOURCEURL=http://ftp.freebsd.org/pub/FreeBSD/releases/$DESTARCH/$DESTRELEASE/
for component in base ports; do fetch $SOURCEURL/$component.txz -o - | tar -xf - -C "$DESTDIR" ; done
}
function by_pkg {
# current https://pkg.freebsd.org/FreeBSD:15:amd64/base_latest
# 14/stable https://pkg.freebsd.org/FreeBSD:14:amd64/base_latest
# 14.1 https://pkg.freebsd.org/FreeBSD:14:amd64/base_release_1
local config
config=$(cat <<EOF
base: {
url: "https://pkg.freebsd.org/FreeBSD:14:amd64/base_release_1",
mirror_type: "none",
enabled: yes,
priority: 100
}
EOF
)
IGNORE_OSVERSION=yes pkg --rootdir "$DESTDIR" --config <(cat <<<"$config") install --repository base --yes --glob 'FreeBSD-*'
}
if [ "$1" = "src" ]; then
by_src
elif [ "$1" = "bin" ]; then
by_bin
elif [ "$1" = "pkg" ]; then
by_pkg
else
die "First argument must be either 'src' or 'bin', got $1"
fi