ezjail is now capable of managing jails in seperate ZFS filesystems and to manage basejail and newjail in seperate ZFS filesystems too.
It is possible to mix non-ZFS jails with ZFS jails as well as using ZFS jails with basejail/newjail in a non-ZFS filesystem.
To create a zfs jail you need an existing ZFS pool, ZFS needs to be enabled in /etc/rc.conf and you have to set at least ezjail_jailzfs in ezjail.conf. To let ezjail manage basejail/newjail in ZFS filesystems to, you have to enable ezjail_use_zfs in ezjail.conf.
To use ZFS support in ezjail, you have to use at least FreeBSD 7-STABLE form after the commit of ZFS version 13 (commited Wed May 20 23:34:59 2009 UTC, http://svn.freebsd.org/viewvc/base?view=revision&revision=192498) of FreeBSD 8-CURRENT. Prior versions of ZFS are _not_ supported.
Creating a ZFS based jail is as easy as using 'ezjail-admin create -c zfs <jailname> <jailip>'.
Using zfs send/receive for archiving is not yet implemented.
Converting non-ZFS basejail/newjail setups into ZFS setups is not handled by ezjail, converting non-ZFS jails into ZFS jails is not yet handled by ezjail but will be possible in the future.
WARNING: ZFS is considered to be an experimental feature in FreeBSD. ZFS support in ezjail is work in progress.
Those commands can be used to add ports, sources and man page packages to an already installed base without reinstalling the base.
Unify error reporting and try to give the user enough clues as how to go on in case of an error.
Also put image size for image jails into the properties list.
Auto attach image jails for archive (if possible, aka non-blocking).
Actually call ezjail-admin create from ezjail-admin restore.
This means, that restore is rudimentary up and running.
* delete now knows a -f switch which forces detach or stop, if jail is attached or running
* restore added
* archive now saves the whole tag to archive to later identify the jail and backup date
* detach_images now also removes the soft link
* starting/stopping a jail moved to its own function
* I enforced some coding style guides
* * [ -n "string" ] is replaced by [ "string" ]
* * Command parameters are being quoted. This will later allow jail roots with spaces in its name
* * variable assignments are always enclosed by exactly one of ${}, `` or "", (except for cases like a=${x}/${y:-"z"}). This means that a="${x}" now is a=${x}
* * [ -z "string" ] && echo "Foo" is replaced by ["string" ] || echo "Foo", which normally reads out more naturally (i.e. [ "${jail_exists}" ] || exerr "Error: Jail does not exist." )
* * $? and $# are now always compared by -eq or -ne operators, not by = or !=