feat(powerman): manage Cyclades PM10i PDU via powerman on pfv-tsys1

Set up centralized PDU management for a Cyclades AlterPath PM10i (10
controllable AC outlets) connected to pfv-tsys1 via a Prolific USB-to-DB9
serial adapter. powermand is now listening on 0.0.0.0:10101, making the
PDU manageable over the network from any host on the tailnet.

Scripts (powerman/):
- discover.sh: gather USB adapter, powerman state, device definitions
- setup.sh: idempotent setup — udev rule (stable symlink by serial number),
  powerman.conf with 10 outlet nodes, fix powermand dialout group, restart
  service. Overridable via env vars for other hosts/PDU types
- test-pdu.sh: validate control by cycling outlet 10 off then on (8/8 pass)
- status.sh: quick PDU status check

Issues fixed during setup:
- Config pointed at /dev/ttyUSB0 but adapter is at /dev/ttyUSB1 (fixed
  with udev symlink /dev/cyclades-pm10 pinned to adapter serial)
- powermand (user:powerman) lacked dialout group membership to open the
  serial device (fixed with usermod + udev GROUP="dialout")

Validation: outlet 10 turned off (confirmed), turned on (confirmed), then
cycled. All 10 outlets currently ON and manageable.

TODO tracked for Friday: rename outlets from generic (outlet-1..10) to
match physical devices, and change PDU admin password from factory default.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
This commit is contained in:
2026-07-28 18:22:47 -05:00
parent 8f1642bf96
commit 8124483da8
8 changed files with 520 additions and 1 deletions
+13 -1
View File
@@ -47,6 +47,15 @@ infrastructure, Proxmox cluster ops, and k8s control plane.
- [ ] Distro decision: **k3s chosen for regular R&D cluster**. Talos docs
preserved in `docs/k8s/` for future ITAR/classified cluster.
### PDU Management (powerman on pfv-tsys1 — LIVE)
- [x] Cyclades AlterPath PM10i (10 outlets) managed via powerman over serial
- [x] USB-DB9 adapter (Prolific pl2303) with stable udev symlink
`/dev/cyclades-pm10`
- [x] powermand listening on `0.0.0.0:10101` (network-accessible)
- [x] All 10 outlets defined as `outlet-1` through `outlet-10`
- [x] Validated: outlet 10 cycled off → on (8/8 test checks passed)
- [ ] Rename outlets to match physical devices (Friday onsite)
### Repo Merge
- [x] KNELServerBuild merged into PFVCluster (history preserved)
- [x] Directory structure reorganized (provisioning/, tests/, perf/, docs/)
@@ -62,7 +71,9 @@ infrastructure, Proxmox cluster ops, and k8s control plane.
## Pending (next session priorities)
1. **k8s workers:** Join wnodes to the k3s cluster (agents, not servers)
1. **PDU: rename outlets** in `/etc/powerman/powerman.conf` to match physical
devices (Friday onsite)
2. **k8s workers:** Join wnodes to the k3s cluster (agents, not servers)
2. **k8s: confirm 3 decisions** for future Talos/ITAR cluster:
- Cnode count: 3 (recommended) vs 5
- Cnode host spread: tsys9 + tsys1 + tsys3 (recommended, 3-host, local-lvm)
@@ -87,4 +98,5 @@ infrastructure, Proxmox cluster ops, and k8s control plane.
| Sandbox VM | sectestbed-sandbox (VMID 6000 on pfv-tsys5) |
| Backup | Proxmox Backup Server (PBS) |
| **k8s control plane** | **3-node k3s HA (cnode1/2/3), all traffic over Tailscale** |
| **PDU** | **Cyclades PM10i via powerman on pfv-tsys1 (port 10101)** |
| Production | Cloudron VPS, Reston VA (this cluster is R&D only) |