Skip to content

docs: correct the hardware and addressing facts this repo got wrong - #44

Merged
Gerrrt merged 1 commit into
mainfrom
claude/ilo-vm-setup-planning-8ut1k5
Aug 20, 2026
Merged

docs: correct the hardware and addressing facts this repo got wrong#44
Gerrrt merged 1 commit into
mainfrom
claude/ilo-vm-setup-planning-8ut1k5

Conversation

@Gerrrt

@Gerrrt Gerrrt commented Aug 20, 2026

Copy link
Copy Markdown
Owner

What changed

Nothing about the running lab — this is documentation catching up with what is
actually installed. A discovery pass against the live estate found several
recorded facts that were not true, and each correction here is measured rather
than inferred.

Where Was Is
docs/network.md, docs/architecture.md, README.md shiva = the hypervisor at 10.0.30.10 shiva = the iLO BMC at 10.0.30.10; Saruman = the Proxmox host at 10.0.30.110
docs/hardware.md oracle: i5-1235U, 32 GB, 2 TB SSD Inspiron 15-3565: AMD A6-9200 (2 cores), 4 GB, 500 GB HDD
docs/hardware.md ProLiant RAM and storage: 2× Xeon E5-2680 v3 (48 threads), 128 GB, 2× 1 TB RAID 1
docs/hardware.md prometheus: MacBook Pro (2012) Retina 13" — 8 GB soldered, no built-in Ethernet, on a USB NIC
docs/security.md "Two exceptions" to default-deny Three. snmp-exporter polls 10.0.30.10 from VLAN 99
docs/security.md Mains loss defended by a monitored UPS mjolnir has no battery; the control does not exist

Also adds a Management section to docs/hardware.md — the BMC had no entry at
all — and closes the 10.0.30.10 roadmap item.

Why

These were not cosmetic. Two of them had become load-bearing:

  • oracle's entry described a machine that does not exist. Planning work had
    already assumed a 32 GB host with Quick Sync was available for a service tier.
    It is a dual-core A6 with 4 GB.
  • The 10.0.30.10 ambiguity was tracked in docs/roadmap.md and flagged in a
    > [!NOTE] in docs/network.md. It is settled: the SNMP target's
    hypervisor-bmc role label was correct all along, and the inventory was not.

The UPS is the one worth reading twice. mjolnir has no battery installed, and
its management card reports a full one regardless — 100% charge, 48.0 VDC, a
battery temperature, an hour of runtime, zero alarms. All derived, none
measured. The only honest signal it emits is the self-test, which returns
Refused — internal fault. Any alert rule keyed on charge, runtime or alarm
count therefore cannot fire, no matter how bad things get. The threat model no
longer claims a control that is not there.

docs/adr/0002 is deliberately left untouched. Per docs/adr/0001 ADRs are
immutable, and 0002 recorded the decision accurately at the time — the third
rule arrived later, with the monitoring stack. The correction belongs in
security.md, which is a living document.

Blast radius

  • No change to network segmentation or firewall rules
  • No new port published to a VLAN that could not already reach the service
  • No credential added outside secrets/*.sops.yaml

Documentation only; no config, no compose, no rules touched.

One follow-up this surfaces rather than fixes: the iLO takes 10.0.30.10 by
DHCP, and prometheus/targets/snmp.yaml hard-codes it. Without a reservation, a
new lease silently breaks the target. Noted in the [!NOTE] block.

Verification

  • make validate passes — all checks passed, including the SNMP inventory
    cross-check across targets, generator, render and example
  • Deployed to the lab and confirmed working — n/a, documentation only. Every
    figure came from the live hosts: dmidecode, lsblk, free, lscpu,
    Prometheus /api/v1/targets, the iLO web UI and the APC NMC
  • Docs updated (docs/, service README, or docs/roadmap.md)

Generated by Claude Code

Discovery against the live estate found several documented facts that were
not true. Every correction here is measured, not inferred.

`10.0.30.10` is the iLO BMC, not the hypervisor. The Proxmox host is
`Saruman` at `10.0.30.110`. The SNMP target's `hypervisor-bmc` role label
was right all along; the inventory was not. The BMC holds its address by
DHCP, which the SNMP target hard-codes, so that now needs a reservation to
stay pollable.

`oracle` was recorded as an i5-1235U with 32 GB and a 2 TB SSD. It is a
dual-core AMD A6-9200 with 4 GB and a 5400 rpm disk. That entry described a
machine that does not exist and had become load-bearing in planning.

The ProLiant is a 2x E5-2680 v3 with 128 GB, not the unknown quantity the
table recorded. `prometheus` is the Retina 2012, so 8 GB soldered and no
built-in Ethernet — it is on a USB NIC.

Three inter-VLAN rules exist, not two. `snmp-exporter` on 10.0.99.20 polls
10.0.30.10 on VLAN 30, and that target has been UP for as long as it has
existed. ADR-0002 is left alone: it recorded the decision accurately when
it was made, and the third rule arrived later with the monitoring stack.
`security.md` is the living document, so the correction goes there.

`mjolnir` has no battery, and its management card reports a full one
anyway: 100% charge, 48.0 VDC, a battery temperature, an hour of runtime
and zero alarms, all derived rather than measured. The only honest signal
it emits is the self-test, which returns Refused with an internal fault.
Any rule keyed on charge or alarm count cannot fire, so the threat model no
longer claims a control that is not there.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013fvaAiKsdyFkX9HgqmuBoj
@Gerrrt
Gerrrt merged commit b37bdd6 into main Aug 20, 2026
3 checks passed
@Gerrrt
Gerrrt deleted the claude/ilo-vm-setup-planning-8ut1k5 branch August 20, 2026 21:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants