psyopsOS grew out of kubernasty, a Kubernetes cluster I’m building for my home lab.
If I’m being honest with myself, I might say that it is simply more fun to build a custom Linux distribution than it is to configure Kubernetes.
If I’m being generous with myself, I might say that it’s an experiment to make maintenance of a fleet of personal servers easier on a single person.
Experimental goals
- OS is small and fully in RAM, and a single image is used for all nodes.
 - The OS is easy to keep in your head and modify as needed.
 - Upgrading the OS is easy.
 - Nodes can boot and configure themselves over the network.
 - Configuration is kept in source control.
 - Drift is kept in check because machines do not keep state except for explicitly mounted directories.
 
Implementation
- It’s built in mrled/psyops in the psyopsOS subdirectory, which includes a few more docs.
 - It is a customization of the excellent Alpine Linux. Alpine has a powerful and simple way to build reliable livecd ISO images, an extremely fast package manager, and very low overhead. It’s a small layer that’s easy to understand and build something else on top of.
 - It uses some custom scripts to work with aports which builds the ISO, including a simple overlay of the livecd filesystem.
 - It relies on a 
psyopsOS-basepackage for early system configuration - It uses progfiguration, another experimental project designed for configuration management, for configuration after boot.
 - An overlay network called psynet which allows nodes to communicate with one another no matter what physical networks they’re on
 - Easy upgrades, just build a new ISO, copy to the node, and run
psyopsOS-write-bootmedia