Release Notes - Captain Jack

This release is dedicated to my son, Jack, who has a birthday today. Happy birthday, buddy.

Bastille is an open-source system for automating deployment and management containerized applications on FreeBSD.



This release includes a number of exciting new features and fixes to reported issues. Thank you to everyone that submitted feedback, GitHub issues and Pull Requests.

Container Types

This release introduces support for a different container design. By default, containers use a read-only mount of a release, which is put in place when the container is started. This method limits any changes to binaries in base path.

Now supported are read-write containers. This method fully replicates the contents of base into the container, allowing the container to manage FreeBSD version independent of any other container.

To use or test this method of container storage use the new -T|--thick option to the create sub-command.


bastille create -T alcatraz 12.1-RELEASE

Syntax Improvements

In previous versions it was required to put quotes ("") around long arguments in Bastille commands. This is no longer the case, but backward compatibility is retained.

These two statements are equivalent.

bastille pkg alcatraz install zsh vim-console git-lite htop
bastille pkg alcatraz 'install zsh vim-console git-lite htop'

While the pkg sub-command is used for the example above, all Bastille sub-commands should now be compabitle with either syntax. Including service, sysrc, cmd, etc.

Template Testing

Automation templates have been moved to GitLab and now take advantage of automated CI/CD testing. These templates (and usage instructions) can be found at BastilleBSD Templates.

The CI/CD pipeline status shown in the README of each template. You’ll know the quality of your template before you try to apply it.

The Bastille template system has been improved with more verbose output and stricter testing. If any part of the template exits with a non-zero (OK) status, the template stops.

Exit code now displayed after each template hook application.

This release adds the ability to update (via freebsd-update) a release at the time of bootstrapping. This means you can bootstrap 12.0-RELEASE and bring it up to -p11 in the same step.

The update argument is a new option to bootstrap.


bastille bootstrap 12.0-RELEASE update

Container network defaults can be overridden during the create step. Append the network interface name to the end of a standard create and the container will bind the ip to that interface on start.

bastille create alcatraz 12.1-RELEASE vtnet0


BastilleBSD has been updated to reflect this release.

Follow @BastilleBSD on Twitter for regular updates.

bug fixes

  • fixed an issue with creating 12.1-RELEASE containers in 0.4.20191025
  • fixed an issue with usr/obj and usr/test being mistakenly copied to the wrong path
  • improved the jail.conf generation template
  • cleaned up the release filtering and validation code
  • template output now silent when no template found
  • updated documentation to avoid pf.conf inconsistency
  • updated BastilleBSD Documentation
  • targeting regression fixed
Christer Edwards
Creator of Bastille

FreeBSD die-hard, software developer, author, educator, man behind BastilleBSD. I build cool stuff.