I wanted to share a solution I came up with for getting super clean, auto-configuring droplets running on DigitalOcean with the latest versions of FreeBSD. No extra junk preinstalled!
As background, DigitalOcean base images come with a bunch of packages to support auto-configuration, no ZFS support, an extra “freebsd” user account, and other “evidences of tampering”. For sysadmins who have always installed FreeBSD from scratch, this feels like being given someone else’s pre-configured server. Plus, we want ZFS, of course.
It’s possible to have it all on DigitalOcean with a one-time effort.
Initially, you start with their base “hand me down” server image. From that, you rebuild it by booting an in-memory FreeBSD environment that runs the standard bsdinstall tool. * And from there, you’re in control of the entire setup process as usual. You can even enable ZFS! When you’re done, you have a fresh-from-the-factory, untainted FreeBSD droplet.
The downside? It has the network settings entered during the install process, so it won’t be auto-configuring from the DigitalOcean metadata API. But this can be fixed with a simple shell script ** that I have put on GitHub -- no extra packages or user accounts needed! After installing it and cleaning up /etc/rc.conf, you can shut down your droplet, make a snapshot of it, and use that image for cloning other droplets.
This is one of my first contributions to the FreeBSD community. I’m interested in any feedback on making it better.
Thanks for a great show. I look forward to watching you guys every week.
San Diego, CA
P.S. The gift! On BSD Now 151, you lamented about Let’s Encrypt clients. I’m not sure which Bash script client Allan had trouble with, but the one I found has worked wonderfully, and it supports SANs. I’m using it as the basis for a “master server” that manages the generation and renewal of certificates deployed across multiple FreeBSD web servers and even mail servers that aren’t running Apache or Nginx. Sounds a bit like what Allan was trying to accomplish. The script, created by Lukas Schauer, and my solution are on GitHub. ***
* How to install FreeBSD with ZFS filesystem on Digitalocean
** Lightweight, zero-dependency, self-configuration for FreeBSD droplets on DigitalOcean
*** Let’s Encrypt Master Server