Introducción a BastilleBSD

Hace tiempo escribí en mi blog que había tropezado casi por casualidad con una herramienta llamada BastilleBSD, https://jdrm.info/bastillebsd-un-gestor-de-contenedores-para-freebsd-y-similares.html. En aquella entrada sólo conté la existencia de este proyecto para gestionar las Jaulas en FreeBSD y similares. Así que creo que es buen momento para hacer un ejemplo de cómo funciona BastilleBSD. No desde cero, porque la documentación sobre el proceso de instalación es bastante completa, sino con un ejemplo práctico.

https://bastille.readthedocs.io/en/latest/chapters/installation.html

Bootstrap

El comando bootstrap sirve para crear un sistema FreeBSD mínimo y aislado. Te recomiendo usar ZFS como sistema de archivo, porque al instalar un bootstrap generará una nueva partición con el sistema.

El siguiente paso es traernos las plantillas que queramos instalar. Una plantilla no es más que una receta que tiene los comandos a realizar. Es parecido a un playbook de Ansible. Cuando tengamos las plantillas y los bootstraps que necesitamos crearemos las jaulas basadas en un bootstrap y aplicaremos en ella las plantillas que necesitemos.

bastille bootstrap 14.0-RELEASE
bastille bootstrap https://gitlab.com/bastillebsd-templates/vault

zfs list | egrep "releases|templates"
zroot/bastille/releases               1.03G  54.5G       96K  /usr/local/bastille/releases
zroot/bastille/releases/14.0-RELEASE   433M  54.5G      433M  /usr/local/bastille/releases/14.0-RELEASE
...
zroot/bastille/templates               300K  54.5G      300K  /usr/local/bastille/templates

ls /usr/local/bastille/templates/bastillebsd-templates
vault

Creando una jaula

El siguiente paso es crear una jaula. En mi caso, como estoy en una red pequeña, le asigno una IP de la red directamente indicando el interfaz de red que debe usar.

bastille create vault 14.0-RELEASE 192.168.1.155 wlan1

Y ya me puedo conectar a la jaula:

Se ve una captura de pantalla con la consola mostrando una Jaula de FreeBSD con una versión del sistema operativo diferente que el servidor

Aplicar una plantilla... o muchas

El siguiente paso es aplicar una o las plantillas que queramos a las jaulas que sea necesario. En este ejemplo voy a aplicar una plantilla para instalar Vault a una jaula, pero podría tener n jaulas a las que instalar una plantilla común.

bastille template vault bastillebsd-templates/vault
[vault]:
Applying template: bastillebsd-templates/vault...
[vault]:
Updating FreeBSD repository catalogue...
[vault] Fetching meta.conf: 100%    163 B   0.2kB/s    00:01
...
[vault]:
vault_enable:  -> YES

[vault]:
Starting vault.

Template applied: bastillebsd-templates/vault

Como se puede ver en el comando estamos indicando el nombre de nuestra jaula y el de la plantilla.

También podemos crear nuestras propias plantillas generando un durectorio que contenga un fichero llamado Bastillefile dentro del filesystem donde se guardan las plantillas y aplicarlo de la misma forma.

Se ve Vault en funcionamiento