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