Rocinante
Rocinante is lightweight configuration management for FreeBSD hosts — from the team that brought you BastilleBSD.
Rocinante is lightweight configuration management for FreeBSD, from the same
team that brought you Bastille. Where Bastille automates your containers,
Rocinante automates the hosts — using the exact same Bastillefile template
format you already know.
Same files. Same syntax. One for the jail, one for the machine it runs on.
noun. The worn-out but spirited horse of Don Quixote — a common workhorse elevated by its purpose. From Spanish rocín (“workhorse”) and antes (“before”): a plow horse transformed into a noble steed.
The idea
Bastille templates (Bastillefiles) describe a desired state — packages to
install, files to copy, services to enable, sysctls to set — and apply it to a
container. Rocinante takes that same declarative template and applies it to a
host system instead.
That means you can manage a bare-metal server, a VPS, or your workstation with the same lightweight, GitOps-friendly automation you use for your jails. No agents, no daemons, no Ruby or Python runtime — just POSIX shell.
Install
pkg install rocinante
Also available from ports at sysutils/rocinante, or track the latest from
GitHub.
Example
Bootstrap a template from any HTTP(S) endpoint, then apply it to the host:
rocinante bootstrap https://github.com/cedwards/freebsd-install rocinante verify cedwards/base rocinante template cedwards/base
A Bastillefile that Rocinante applies looks exactly like one you’d use with
Bastille:
PKG htop vim git-lite
CP etc /
SYSRC cloned_interfaces+=lo1
SERVICE ntpd restart
SYSCTL kern.randompid=1
Command surface
Rocinante mirrors the FreeBSD tooling you already use, applied to the host:
| Command | Purpose |
|---|---|
bootstrap | Fetch an automation template from an HTTP(S) endpoint |
template | Apply a template to the host |
verify | Dry-run a template and check it against a known-good index |
pkg | Manage binary packages — see pkg(8) |
service | Manage services — see service(8) |
sysrc | Safely edit rc files — see sysrc(8) |
sysctl | Manage sysctl values — see sysctl(8) |
cp / cmd | Copy files / run arbitrary commands |
limits | Apply resource limits — see rctl(8) |
update / upgrade | Patch or upgrade the release — see freebsd-update(8) |
zfs | Manage ZFS attributes |
Learn more
- Documentation — full reference
- Source on GitHub
Rocinante is released under the BSD 3-Clause license. Found a bug? Open an issue.