Skip to content

feat: expose watchtower HTTP API for gated rollouts#171

Open
barnabasbusa wants to merge 2 commits into
masterfrom
feat/watchtower-http-api
Open

feat: expose watchtower HTTP API for gated rollouts#171
barnabasbusa wants to merge 2 commits into
masterfrom
feat/watchtower-http-api

Conversation

@barnabasbusa
Copy link
Copy Markdown
Contributor

Summary

Expose each node's watchtower HTTP API at a watchtower-<host> vhost (the same nginx-proxy pattern as bn-/rpc-), so panda-pulse's /roll command can trigger gated, sequential image rollouts over HTTPS with a bearer token — no SSH. Mirrors ethpandaops/glamsterdam-devnets#8 in the template so new devnets get it by default.

Also switches watchtower from --interval=900 (auto-poll) to --http-api-update (trigger-only): images no longer roll on a timer, only when explicitly triggered.

Changes

  • all.yaml — add ethereum_node_watchtower_prefix/_hostname; put the watchtower container on the shared network with VIRTUAL_HOST/VIRTUAL_PORT/LETSENCRYPT_HOST + WATCHTOWER_HTTP_API_TOKEN; replace --interval=900 with --http-api-update.
  • dns_server.yaml — add watchtower-<host> A/AAAA records for ethereum_node hosts.

Note

Each devnet created from this template must add secret_watchtower_api_token to its all.sops.yaml.

Expose each node's watchtower HTTP API at a watchtower-<host> vhost (same
nginx-proxy pattern as bn-/rpc-) so panda-pulse's /roll command can trigger
gated, sequential image rollouts over HTTPS with a bearer token — no SSH.

- all.yaml: add ethereum_node_watchtower_prefix/_hostname; put watchtower on the
  shared network with VIRTUAL_HOST/VIRTUAL_PORT/LETSENCRYPT_HOST + the API token
  env; switch from --interval=900 (auto-poll) to --http-api-update (trigger-only).
- dns_server.yaml: add watchtower-<host> A/AAAA records for ethereum_node hosts.

Each devnet created from this template must add secret_watchtower_api_token to
its all.sops.yaml.
The setup script installs ansible-lint via `python -m pip install` under
the asdf-shimmed python but never reshims afterwards, so the console
script has no shim and CI fails with `ansible-lint: command not found`.
Add `asdf reshim python` after the install.

Also: add the watchtower API token secret reference, normalize the
watchtower env block to 2-space indentation, and fix a malformed
`#noqa` (missing space) on the inventory-web role vars that 24.6.0
rejects as both yaml[comments] and unsuppressed var-naming.
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.

1 participant