https://github.com/ezaquarii/puffmatic
OpenBSD Autoinstall Generator
https://github.com/ezaquarii/puffmatic
installer openbsd sysadmin
Last synced: about 1 month ago
JSON representation
OpenBSD Autoinstall Generator
- Host: GitHub
- URL: https://github.com/ezaquarii/puffmatic
- Owner: ezaquarii
- License: bsd-3-clause
- Created: 2025-09-06T11:17:23.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-07T11:22:00.000Z (10 months ago)
- Last Synced: 2025-09-07T13:14:11.124Z (10 months ago)
- Topics: installer, openbsd, sysadmin
- Language: Python
- Homepage:
- Size: 52.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Puffmatic - OpenBSD Autoinstall Generator
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)](https://man.openbsd.org/autoinstall) 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)](https://man.openbsd.org/httpd).
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](example.com) domain configuration can be tested
using [vmd(8)](https://man.openbsd.org/vmd) and
[httpd(8)](https://man.openbsd.org/httpd) locally.
## Installation
### Installing from PyPI
Puffmatic is released to PyPI, so you can install it using `pip`:
```shell
python3 -m venv venv
. venv/bin/activate
pip install puffmatic
```
### Running from source directory
This 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:
```shell
make bootstrap
```
It 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:
```shell
. .envrc
```
Test with:
```shell
python3 -m puffmatic help
```
Last 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.
## example.com
Once installed, you should explore the example. Go stright to
[example.com README.md](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!