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.

Rocinante /ˌrä-zə-ˈnän-tē/

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:

holden ~
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:

CommandPurpose
bootstrapFetch an automation template from an HTTP(S) endpoint
templateApply a template to the host
verifyDry-run a template and check it against a known-good index
pkgManage binary packages — see pkg(8)
serviceManage services — see service(8)
sysrcSafely edit rc files — see sysrc(8)
sysctlManage sysctl values — see sysctl(8)
cp / cmdCopy files / run arbitrary commands
limitsApply resource limits — see rctl(8)
update / upgradePatch or upgrade the release — see freebsd-update(8)
zfsManage ZFS attributes

Learn more


Rocinante is released under the BSD 3-Clause license. Found a bug? Open an issue.