Repository navigation
Closed
Labels
Description
Context
Audit of the embedded profiles on 2026-11-09.
- verified:
internal/config/profiles/dgx.yaml:22-25hard-codescloudflared.private_network.interfaceand a fixed/32addresssince the initial commit. Every host that appliesdgxclaims the same address. - verified:
gpu-server.yamlsetsprivate_network.enabled: truewith an empty address; every code path requires a non-empty address (cloudflared.go:178,218), so it does nothing. - inferred:
full.yamlrepeats keysminimalalready sets and enablesnetworkwithoutufw: true, which makes the network module a no-op (network.go:76).allowed_ports: [22]repeats whatrequiredPortsalways adds. - verified: README's profile table omits
rocky, saysminimaladds "ufw" (it installs the package but does not enable the network module), and omits dgx's/raid/home, GPU allocation and UFW.
Implementation starts only on the owner's go-ahead.
Decisions
- Site-specific values (addresses, interfaces) never live in embedded profiles; they go in a site config that
extendsa profile. private_network.enabled: truewith an empty address becomes a validation error with a message naming the key to set.
| Decision | Owner | Limits | Revisit when |
|---|---|---|---|
| Remove the dgx VLAN address outright (breaking, Action needed) vs. keep it one release with a deprecation warning | user | DGX hosts that rely on it must add the address to their site config before upgrading | — |
- 2026-11-09: remove the dgx VLAN address from the profile now (no deprecation release); release notes carry the Action needed step for DGX hosts. Basis: owner decision in the planning session.
Design
- Drop
private_networkfromdgx.yamlandgpu-server.yaml; keepcloudflared.enabled. - Remove duplicate and no-op keys from
full.yaml,dgx.yaml,gpu-server.yaml; decide whetherfullmeans UFW on (ufw: true) or dropnetworkfrom it. config.Validate(): error on enabled private network without address.- First check what
applydoes to an existing VLAN when the profile stops declaring it (must not tear it down silently); record the result in the issue.
Changes
internal/config/profiles/{dgx,gpu-server,full}.yaml,internal/config/validate.go(+ test),README.mdprofile table,docs/fleet.example.yaml(site-config example withprivate_network), release notes### Action needed.
Acceptance criteria
- AC1: no embedded profile contains an IP address (
grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' internal/config/profilesis empty). - AC2:
rootfiles config validaterejectsprivate_network.enabled: truewithoutaddress, naming the key. - AC3: each profile's effective config (
config show --profile X) differs from before only by the removed keys; a golden test pins it. - AC4: README profile table matches the YAML, including
rocky. - AC5: release notes carry the Action needed step for DGX hosts.
Tasks
- T1: confirm existing-VLAN behaviour on profile removal (read cloudflared Check/Apply), note it here
- T2: profile edits + golden test (AC1, AC3)
- T3: validation (AC2)
- T4: README table, example site config, release note (AC4, AC5)
Out of scope
- New profiles.
Activity
entelecheia commentedon Nov 9, 2026
T1: what
applydoes to an existing VLAN when the profile stops declaring itRead from
internal/module/cloudflared.goon v0.18.1 (949d449):CheckandApplyboth gate the VLAN step onPrivateNetwork.Enabled && Address != "". Withprivate_networkabsent from the resolved config, neither the drift check norsetupVLANruns, so the existing systemd-networkd files (/etc/systemd/network/10-cloudflared-vlan.netdev,/etc/systemd/network/10-cloudflared-vlan.network) and the interface configured from them are left exactly as they are.applydoes not tear the VLAN down and does not rewrite it from another source.applyremoves them. The only removal path isrootfiles tunnel uninstall, which deletes the interface, both networkd files and the cloudflared binary together, so it is not a VLAN-only cleanup.rootfiles checkstays silent about it, androotfiles tunnel statusprints whateverip addr show vlan0returns because it derives only the interface name from the config.### Action neededline should tell DGX operators to either move the address into a site config (private_networkundermodules.cloudflared) so the VLAN stays managed, or remove the interface and networkd files deliberately.gpu-server'sprivate_network.enabled: truewith an empty address currently does nothing: it never reachessetupVLAN. Dropping the block there changes no behaviour; the new validation error only closes the silent-config hole.Proceeding with T2 (profile edits + golden test), T3 (validation) and T4 (example site config; README table text goes in the PR body for #96).