No description
Find a file
2025-10-07 14:50:01 +02:00
bin Remove redundant filename prefix 2025-10-06 15:40:00 +02:00
lib/sysadm Added vm + bootstrap 2025-10-07 10:31:23 +02:00
libexec/sysadm Fixed bootstrap in remaining commands 2025-10-07 14:50:01 +02:00
LICENSE Initial commit 2025-10-05 18:07:53 +00:00
Makefile Migrated ccdtool into sysadm-volume 2025-10-06 01:09:49 +02:00
README.md README 2025-10-05 20:15:16 +02:00

sysadm — A Unix-native Systems Fabric

"From storage to virtual machines to backup — one consistent control plane for NetBSD."


🧭 Vision

sysadm is a lightweight, modular framework for managing system resources, machines, and services on Unix-like systems — with a special focus on NetBSD, Xen, and the classical BSD system philosophy.

The goal is to provide a unified, transparent, and script-friendly environment where every aspect of the system lifecycle can be orchestrated consistently — from creating a VM, configuring its network, to performing full system backups.


⚙️ Core Idea

“Tools, not daemons. Files, not databases. Logic, not layers.”

sysadm follows the traditional UNIX philosophy:

  • small, composable tools
  • clear, text-based interfaces
  • no hidden magic or background daemons

Configurations are simple directory trees (registry-like, but file-based).
Every subsystem communicates through plain files, devices, and processes.


🧩 Architecture Overview

sysadm consists of a main command and several subsystem modules, each handling one domain of system management:

/usr/local/sbin/sysadm
│
├── sysadm-storage   → manage devices and filesystems
├── sysadm-vm        → initialize and configure virtual machines
├── sysadm-backup    → perform and restore system backups
├── sysadm-config    → manage registry-style configuration
├── sysadm-net       → configure bridges, IPs, and routing
└── sysadm-status    → display overall system status

Each subsystem follows the same CLI pattern:

sysadm <subsystem> <command> [args]

Examples:

sysadm storage format ccd0a 10G
sysadm vm build /etc/vmconfigs/vm1
sysadm backup run vm1
sysadm net bridge list
sysadm config set vm1/ip 192.168.2.101

🧱 Components

1. Registry

Configuration is stored in directory trees, e.g.:

/etc/vmconfigs/vm1/
 ├── device        -> /dev/ccd0a
 ├── hostname      -> vm1
 ├── ip            -> 192.168.2.101
 ├── gateway       -> 192.168.2.1
 ├── vif/mac       -> 00:16:3e:ab:cd:ef
 ├── memory        -> 512
 ├── vcpus         -> 1
 └── kernel        -> /sysadm/dist/netbsd/10.0/netbsd-INSTALL_XEN3_DOMU

→ No XML, no YAML, no JSON.
→ All tools interact directly with this structure.


2. Storage Management

Modules for creating, formatting, and managing storage devices.

sysadm storage format ccd0a 10G

Creates a new FFS filesystem and marks it for VM usage.


3. VM Lifecycle (vminit)

The sysadm-vm subsystem can automatically:

  • install a root filesystem,
  • extract NetBSD distribution sets,
  • configure users, SSH, and networking,
  • set up pkgin and generate Xen configuration.
sysadm vm build /etc/vmconfigs/vm1

Result:

  • /dev/ccd0a with a bootable system image
  • /usr/pkg/etc/xen/vm1.cfg created
  • ready to launch via xl create vm1.cfg

4. Backup Framework (vmbackup)

Integrated via:

sysadm backup run vm1

Performs filesystem dumps over SSH using FSS snapshots,
handles labels, hashes, and rotation — no daemons, only standard tools.


5. Network Management

Subsystem for managing bridges, interfaces, and routing.
Integrates with Xen bridges and host networking.


6. Config Layer

Manages registry-style configuration trees:

sysadm config list
sysadm config get vm1/ip
sysadm config set vm2/memory 1024

This file-based registry acts as the systems unified configuration backend.


📦 Installation

By default, sysadm installs into /usr/local:

make install

Resulting layout:

/usr/local/sbin/sysadm
/usr/local/sbin/sysadm-*
/usr/local/libexec/sysadm/
/usr/local/etc/sysadm.conf
/usr/local/share/doc/sysadm/

Uninstall:

make uninstall

🧭 Design Principles

Principle Description
Clarity over complexity simple shell, no frameworks
Files are the interface no JSON/YAML, only directories
Transparency no hidden daemons or state
Composability every tool can run standalone or in combination
NetBSD first optimized for BSD utilities and Xen environments

🧰 Dependencies

  • Standard NetBSD Base Utilities (sh, awk, sed, tar, newfs, mount, chroot, pkg_add)
  • Xen (for VM operations)
  • Optional: pkgin, ssh, uuidgen

🚧 Project Status

sysadm is in active early development.
Current module state:

  • vminit — VM creation & configuration
  • vmbackup — filesystem backup framework
  • 🚧 storage — device and filesystem management
  • 🚧 config — registry-based configuration manager
  • 🚧 net — bridge and network control

🌐 Outlook

The long-term goal is a fully self-describing system framework that:

  • manages storage, network, machines, and configuration consistently,
  • can rebuild itself from its own registry,
  • and operates entirely in the Unix tradition — without dependencies, only tools.

📜 License

Released under a simple BSD license
because sysadm isnt a framework, its a toolkit.


👤 Author

Project initiated and maintained by
Matthias Petermann
NetBSD / Xen enthusiast, automation purist.


💬 Motto

“A system should describe itself in files,
and be built again from them, by its own tools.”