This script streamlines the preparation of files for unattended OpenBSD installations using USB thumb drives and HTTP.
It modifies the USB installer image with autoinstall(8) response files and site sets.
Additionally, the script can create a collection of response files, disk label files, and site set archives, which are suitable for serving through httpd(8).
This approach is particularly beneficial for faster provisioning on budget VPS systems where TFTP boot is not an option. Simply boot the installer from the vendor-provided image and direct it to the self-hosted response file. Installation assets can be secured using basic authentication (don't forget about TLS!).
Provided example.com domain configuration can be tested using vmd(8) and httpd(8) locally.
Puffmatic is released to PyPI, so you can install it using pip:
python3 -m venv venv
. venv/bin/activate
pip install puffmaticThis script runs on OpenBSD and requires Python 3. All dependencies
are in base system or are installed by pip. Checkout source
directory from git to boostrap it:
make bootstrapIt will create venv and install handful of dependencies to run, test
and develop puffmatic.
If you are using envrc, provided .envrc will ensure venv is activated,
and PYTHONPATH and PATH are updated for seamless use.
If you don't run envrc, you can source the shell environment
manually to the same effect:
. .envrcTest with:
python3 -m puffmatic helpLast but not least, you must grant access to some shell utilities in
priviledged mode. Put this in your /etc/doas.conf:
permit nopass user cmd mount
permit nopass user cmd umount
permit nopass user cmd vnconfig
permit nopass user cmd install
If you are concerned about elevated priviledges, create a dedicated user account.
Once installed, you should explore the example. Go stright to
example.com README.md, where you will find
further documentation and a tutorial runnable using vmd(8).
The example is "self documenting" in the sense that all elements are
covered by adjacent README.md files scattered around.
Enjoy!