Skip to content

Hardware Naming Scheme Design

Date: 2026-06-24 Status: Approved

Goal

Settle a single, clear hardware naming scheme for the MakerFLOSS rack that the team can grow within, before more devices are documented. The scheme assigns every physical device a stable identifier and pushes everything that changes over time (which cluster a node serves, its role) into frontmatter, so the identifier never has to be renamed when hardware is repurposed.

Context

  • Hardware is documented one-file-per-device under docs/hardware/*.md, with the file name equal to the device identifier (enforced by scripts/gen_overview.py).
  • Current names are inconsistent: compute uses an org/brand prefix (mf00mf04), infrastructure uses kind prefixes (pdu01/02, sw01, pp01).
  • The inventory to be documented is a mix of rack and home-office gear, grouped into clusters (TaPPaaS production + four test clusters) plus crosscutting power/network gear. Stationary PCs will sit on rack shelves.
  • Hardware moves between test clusters over time, so cluster membership is a changeable attribute, not an intrinsic property of a device.

Decisions

1. Identifier nature (mixed)

  • Compute nodes (stationary PCs) and managed switches: the identifier is the device's real OS/DNS hostname. It must be DNS-safe (lowercase letters, digits, hyphens) and stable — renaming costs OS/DNS/Ansible churn.
  • Passive gear (UPS, PDU/power strip, patch panel, unmanaged switch): the identifier is a documentation/physical-label id only; the device has no OS.

2. Format

<kind-abbrev><NN> — a kind abbreviation followed by a 2-digit zero-padded sequence, globally unique within a kind, starting at 01. The number is just "next free"; it encodes nothing — not cluster, rack, role, or port count. A 10-port and a 24-port switch are still sw01 and sw02.

3. Kind abbreviation table

The prefix equals the kind field, so the name is self-describing.

Device kind abbrev example
Stationary PC / server server srv srv01
Switch (managed or dumb) switch sw sw01
Patch / network panel patch-panel pp pp01
PDU / power strip pdu pdu pdu01
UPS ups ups ups01
Shelf shelf shf shf01
WAN uplink / ISP demarcation wan wan wan01

Existing enum kinds not yet in the rack reuse their natural short form when first used (apap, kvmkvm, sbcsbc, laptoplt, desktopdt, blankblank); register the chosen abbrev in this table at that time.

Distinguishing attributes (port/outlet count, managed vs dumb, speed) live in frontmatter (ports:, outlets:, …), never in the name.

4. Grouping in frontmatter, not the name

  • cluster: — one of tappaas, test-1, test-2, test-3, test-4, or shared (crosscutting gear that spans clusters: power strips, shared patch panels). Editing this field is the entire cost of moving a node between clusters.
  • role: — optional, free-form (e.g. control, worker); added only where it earns its keep.

A future generator step may group/table hardware by cluster, exactly as the hardware index groups by kind today. That is not part of this scheme — the scheme only fixes the field and its allowed values.

5. Exceptions

Cloud / externally-named hosts keep their real FQDN as the identifier (e.g. makerfloss.eu) instead of srvNN. They are not racked and DNS owns the name. Such hosts carry no rack: field and need no cluster:.

6. Growth rules

  • New device class: add the kind to the hardware enum in scripts/overview_config.yml and register a short abbrev in the table above.
  • New grouping: add a cluster: value.
  • More than 99 of one kind: widen that kind's sequence to 3 digits.
  • More racks: already supported via the rack: field (Phase 1).
  • Multiple sites: deferred until real (YAGNI); a site prefix or field can be added without disturbing existing names.

Migration of current names

Current New Notes
mf00 srv01 "TaPPaaS node 1" → cluster: tappaas
mf01 srv02 cluster omitted until a real assignment is given
mf02 srv03
mf03 srv04
mf04 srv05
pdu01, pdu02 unchanged already conform
sw01, pp01 unchanged already conform
makerfloss.eu unchanged cloud FQDN exception

The mf0x machines are staging placeholders, so renaming is cheap now. The rename touches their files, the power:/links: references to them in pdu*/sw*/pp* and sibling host files, and the regenerated artifacts under docs/hardware/index.md and docs/infrastructure/racks/. The cluster assignments for srv02srv05 are provisional until real values are given; srv01 = tappaas is the one known mapping.

Out of scope

  • Choosing the best distribution of hardware across clusters.
  • Building a generator view that groups by cluster (possible future work).
  • Real cluster assignments beyond srv01 = TaPPaaS.