After the host rebooted, truenas began mailing NOCOMM continuously. The UPS driver was fine throughout -- nut-driver@cyberpower stayed running and the CyberPower is still on USB here. What died was upsd, which publishes its state to truenas over the network: upsd: not listening on 192.168.1.10 port 3493 upsd: Fatal error: some listening interfaces were not available nut-server.service: Start request repeated too quickly upsd binds an explicit address, but the packaged unit only orders itself After=network.target, which is satisfied when networking STARTS rather than when an address exists. It tried to bind 11 seconds into boot, before NetworkManager had assigned the address, then burned all five default restart attempts inside one second, tripped the start limit and stayed dead. The shipped unit carries these two lines commented out, because upstream knows the case. network-online.target is the correct ordering; NetworkManager-wait-online is enabled here so it genuinely waits for addresses. StartLimitIntervalSec=0 and RestartSec are belt and braces: a slow address can no longer exhaust the attempts, and retries are spaced instead of hammered. truenas needs no change -- it is a correctly configured SLAVE that reconnected on its own, and its NUT config is regenerated from the middleware database anyway. Verified: upsd listening on both addresses, UPS OL at 100%, and truenas querying it again with zero failures since. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
42 lines
1.3 KiB
YAML
42 lines
1.3 KiB
YAML
---
|
|
# CyberPower PR1500LCDRT2U cabled by USB to this host (0764:0601).
|
|
# This host is the NUT server; truenas.localdomain is a NUT slave.
|
|
ups_name: cyberpower
|
|
# lsusb reports the product string as PR1500LCDRT2U, but the device itself
|
|
# reports device.model CP1500PFCRM2U. The latter is what it actually is.
|
|
ups_desc: CyberPower CP1500PFCRM2U
|
|
ups_vendorid: "0764"
|
|
ups_productid: "0601"
|
|
|
|
ups_listen_addr: 192.168.1.10
|
|
ups_listen_port: 3493
|
|
|
|
# truenas.localdomain - the only host allowed to reach upsd
|
|
ups_slave_ip: 192.168.1.11
|
|
|
|
# Battery charge at which THIS host shuts itself down. TrueNAS sheds much
|
|
# earlier via its own "shutdown timer" setting (see roles/ups/README.md).
|
|
ups_low_charge_pct: 10
|
|
|
|
# Seconds of stable mains after ONLINE before TrueNAS is powered back on.
|
|
ups_restore_stable_secs: 300
|
|
|
|
# R415 iDRAC6. Shares LOM1 with bce0.
|
|
idrac_host: 192.168.1.12
|
|
idrac_user: root
|
|
|
|
ups_deps:
|
|
[
|
|
ipmitool,
|
|
nut,
|
|
nut-client,
|
|
]
|
|
|
|
# Secrets live in ansible/vars/vault.yml (no vault_ prefix, per repo
|
|
# convention): nut_upsmon_password, nut_truenas_password, idrac_password
|
|
|
|
# Seconds between upsd restart attempts. Paired with StartLimitIntervalSec=0 in
|
|
# the nut-server drop-in, so a late network address retries patiently instead of
|
|
# exhausting the default five-tries-per-interval and giving up for good.
|
|
ups_server_restart_sec: 10
|