node-facts.sh: operator-verified rewrite (python; parallel; fixture self-test) - see ansible_showcase/node-facts-plan.md

This commit is contained in:
2026-10-06 07:36:38 +00:00
parent fe22be322e
commit b947d7ddf3
30 changed files with 367 additions and 1401 deletions
+14
View File
@@ -833,6 +833,20 @@ debugging reference, see [VIBE.md](VIBE.md).
| `restore-volumes.sh <name>` | Restore from backup |
| `node-facts.sh` | Emit JSON node facts documents for monitoring and inventory |
### node-facts.sh — one JSON facts document per node
`./node-facts.sh [node_path ...] [--pretty]` prints one JSON line per node (schema v1): running client
image/tag and reported version, peer count + peer version histogram + `newer_than_us`, the protocol
upgrade schedule the running config knows (chain config / rollup config / beacon spec / avalanche
`info.upgrades`), chain signals (avalanche ACPs), head, and for OP-stack / beacon pairs a `consensus`
block with the same fields for the consensus client. Every field is present; anything a client cannot
provide is `null` with a `reason`. Read-only: compose files + `docker ps` + HTTP through the local
traefik routes (`/<node>`, `/<node>/node`, `/<node>/eth`), parallel over nodes and calls, ~200 ms per
host. Exit 2 with one error line if `.env`/`COMPOSE_FILE` is unreadable. Consumers: JobServer verb
`node-facts`, controller `node-facts-collect` (CouchDB `node_facts:*`), Checkmk `node_facts_check.py`.
Self-test (no network, no docker): `./test-node-facts.sh` runs the real main body against
`node-facts-test/` fixtures via `NODE_FACTS_FIXTURES`.
---
## 16. Learning More