Jail Startup Configuration¶
Bastille can start jails on system startup, and stop them on system shutdown. To enable this functionality, we
must first enable Bastille as a service using sysrc bastille_enable=YES
. Once you reboot your host, all jails
with boot=on
will be started when the host boots.
If you have certain jails that must be started before other jails, you can use the priority option. Jails will start in order starting at the lowest value, and will stop in order starting at the highest value. So, jails with a priority value of 1 will start first, and stop last.
See the chapter on targeting for more info.
Boot¶
The boot setting controls whether a jail will be started on system startup. If you have enabled bastille
with sysrc bastille_enable=YES
, all jails with boot=on
will start on system startup. Any jail(s)
with boot=off
will not be started on system startup.
By default, when jails are created with Bastille, the boot setting is set to on
by default. This can be overridden using
the --no-boot
flag. See bastille create --no-boot TARGET...
.
You can also use bastille start --boot TARGET
to make Bastille respect the boot setting. If -b|--boot
is not
used, the targeted jail(s) will start, regardless of the boot setting.
Jails will still shut down on system shutdown, regardless of this setting.
The -b|--boot
can also be used with the stop
command. Any jails with boot=off
will
not be touched if stop
is called with -b|--boot
. Same goes for the restart
command.
This value can be changed using bastille config TARGET set boot [on|off]
.
This value will be shown using bastille list all
.
Depend¶
Bastille supports configuring jails to depend on each other when started and stopped. If jail1 “depends” on jail2, then
jail2 will be started if it is not running when bastille start jail1
is called. Any jail that jail1 “depends” on will
first be verified running (started if stopped) before jail1 is started.
For example, I have 3 jails called nginx, mariadb and nextcloud. I want to ensure that nginx and mariadb are running before nextcloud is started.
First we must add both jails to nextcloud’s depend property with bastille config nextcloud set depend "mariadb nginx"
.
Then, when we start nextcloud with bastille start nextcloud
it will verify that nginx and mariadb are running (start if stopped) before
starting nextcloud.
When stopping a jail, any jail that “depends” on it will first be stopped. For example, if we run bastille stop nginx
, then
nextcloud will first be stopped because it “depends” on nginx.
Note that if we do a bastille restart nginx
, however, nextcloud will be stopped, because it “depends” on nginx, but will not be started again, because the jail we just restarted, nginx, does not depend on nextcloud.
Parallel Startup¶
Bastille supports starting, stopping and restarting jails in parallel mode using the rc
service script. To enable this functionality, set
bastille_parallel_limit
to a numeric value.
For example, if you run sysrc bastille_parallel_limit=4
, then Bastille will start 4
jails at a time on system startup, as well as stop or restart 4 jails at a time when service bastille...
is called.
This value is set to 1 by default, to only start/stop/restart jails one at a time.
Startup Delay¶
Sometimes it is necessary to let a jail start fully before continuing to the next jail.
We can do this with another sysrc value called bastille_startup_delay
. Setting bastille_startup_delay=5
will
tell Bastille to wait 5 seconds between starting each jail.
You can also use bastille start -d|--delay 5 all
or bastille restart -d|--delay 5 all
to achieve the same thing.