#!/bin/sh
#
# (c) 2009-2011 Wheel Systems Sp. z o.o.
#
# Author: Pawel Jakub Dawidek
#
if [ $# -ne 2 ]; then
echo "usage: $0 name ip" >/dev/stderr
exit 1
fi
name="${1}"
ip="${2}"
base="system/jails/${name}"
path="/jails/${name}"
zfscreate() {
zfs list -Ht snapshot system/root@jailbase >/dev/null 2>&1
[ $? -ne 0 ] && zfs snapshot system/root@jailbase
zfs clone system/root@jailbase ${base}
zfs set readonly=on ${base}
zfs create -o readonly=off -o setuid=off ${base}/etc
zfs create -o readonly=off -o compress=lzjb -o setuid=off ${base}/tmp
zfs create -o readonly=off -o compress=lzjb -o setuid=off ${base}/var
zfs create -o readonly=off -o canmount=off ${base}/usr
zfs create ${base}/usr/local
zfs create -o setuid=off ${base}/usr/work
zfs create -o readonly=off ${base}/root
#zfs create -o readonly=off -o setuid=off ${base}/usr/home
chmod 1777 ${path}/tmp
mkdir -m 755 ${path}/usr/work/distfiles ${path}/usr/work/packages
}
makesrc() {
cd /usr/src
make -k distrib-dirs DESTDIR=${path} >/dev/null
make -k distribution DESTDIR=${path} >/dev/null
}
makeconf() {
sed -i '' -E 's/^(.*adjkerntz -a)$/#\1/' ${path}/etc/crontab
sed -i '' -E 's/^(.*newsyslog)$/#\1/' ${path}/etc/crontab
(
echo '# nagios cron'
echo '*/5 * * * * root /bin/date "+\%s" >/tmp/.cron'
) >>${path}/etc/crontab
(
echo 'WRKDIRPREFIX=/usr/work'
echo 'DISTDIR=/usr/work/distfiles'
echo 'PACKAGES=/usr/work/packages'
echo 'PKGREPOSITORY=/usr/work/packages'
) >${path}/etc/make.conf
(
echo 'hostname="'${name}'.wheel.pl"'
echo
echo 'devd_enable="NO"'
echo 'newsyslog_enable="NO"'
echo 'sendmail_enable="NO"'
echo 'sendmail_submit_enable="NO"'
echo 'sendmail_outbound_enable="NO"'
echo 'sendmail_msp_queue_enable="NO"'
echo
echo 'nrpe2_enable="YES"'
echo 'nrpe2_pidfile="/var/run/nrpe2.pid"'
) >${path}/etc/rc.conf
(
echo 'nameserver 10.0.0.1'
echo 'search wheel.pl'
) >${path}/etc/resolv.conf
(
echo '*.* @127.0.0.2'
) >${path}/etc/syslog.conf
echo "${ip} ${name} ${name}.wheel.pl" >>/etc/hosts
(
echo ${name}
) >>/etc/mail/local-host-names
#/etc/rc.d/sendmail restart
cp /etc/periodic.jail.conf ${path}/etc/periodic.conf
cp /root/.tcshrc /root/.complete ${path}/root/
(
echo "# Device Mountpoint FStype Options Dump Pass#"
echo "/usr/ports ${path}/usr/ports nullfs ro 0 0"
) >/etc/fstab.${name}
tar cf - -C /etc/mtree/ . | tar xf - -C ${path}/etc/mtree/
cp -f /etc/localtime ${path}/etc/
cp -f /etc/mail/aliases /etc/mail/aliases.db /etc/mail/mailer.conf ${path}/etc/mail/
ln -s mail/aliases ${path}/etc/aliases
ln -s mail/aliases.db ${path}/etc/aliases.db
(
echo "+${name}"
echo "*.* /var/log/jail_${name}.log"
) >>/etc/syslog.conf
touch /var/log/jail_${name}.log
chmod 640 /var/log/jail_${name}.log
/etc/rc.d/syslogd reload
(
echo
echo "jail_${name}_rootdir=\"/jails/${name}\""
echo "jail_${name}_hostname=\"${name}.wheel.pl\""
echo "jail_${name}_ip=\"${ip}\""
) >>/etc/rc.conf
sed -I $$ -E 's/^jail_list="(.*)"/jail_list="\1 '${name}'"/' /etc/rc.conf
}
zfscreate
makesrc
makeconf