Commit Graph
13 Commits
Author SHA1 Message Date
evangelostsak ec9695ee88 test(wireguard): drop HOST_IMAGE from the CLI test env 2026-10-18 13:56:07 +02:00
evangelostsak ebb6561972 test(wireguard): read the host image from the role's test service 2026-10-18 01:01:08 +02:00
evangelostsak 6e8fbd9c25 test(wireguard): size the bulk probe and bound the SSH connect time 2026-10-16 13:55:11 +02:00
evangelostsak 17689d6905 test(wireguard): hand the CLI test its image, interpreter, repository and carrier role
The image is the same pinned debian:13.7-slim svc-net-tor and svc-db-openldap
build from. The interpreter is the controller's, which carries the mesh CLI's
dependencies; the managed /usr/local/bin/python3 does not.
2026-10-16 03:40:16 +02:00
evangelostsak 13f627ba23 feat(wireguard): every member of a full mesh listens and dials its peers
The hub listens and a spoke dials its hub, as before. In a full mesh every
member listens on the mesh port and keeps every peer alive.
2026-10-16 03:40:15 +02:00
evangelostsak c8401329e0 fix(wireguard): dial the peer's endpoint
Falls back to the hostname, so an inventory written before the endpoint
existed renders exactly as it did.
2026-09-27 02:03:41 +02:00
evangelostsak 3043f6607d refactor(svc-net-wireguard): render the shared key and the measured MTU 2026-09-25 22:35:29 +02:00
evangelostsak 773d7f01d1 feat(wireguard): render one interface per mesh the host belongs to
ListenPort is emitted only on the hub, since spokes dial out and never accept.
A spoke's peer entry for the hub carries an Endpoint plus a keepalive so the
tunnel survives NAT and re-establishes without traffic; the hub's entries for
its spokes carry neither, because it learns their addresses from the handshake.

AllowedIPs asymmetry is what makes the routing work: a spoke routes the whole
mesh subnet at the hub, which is how it reaches the far plane, while the hub
pins each spoke to a single address.
2026-09-18 10:34:16 +02:00
evangelostsak c40d7aa6da chore(wireguard): remove the role and its references to start fresh
The consolidated svc-net-wireguard role, its requirement document and the three
references that only existed to support it go away together: the lint ignore for
a load failure inside its tasks, the requirements index entry, and the tunnel
subnet variable nothing else consumed.

Left in place deliberately: the WireGuard mention in the svc-net category
description, which is upstream prose about networking roles in general rather
than anything this role owned.
2026-09-18 00:30:39 +02:00
evangelostsak 2f4ea68d14 test(svc-net-wireguard): rewrite e2e as deploy-driven full mesh
Replaces the linuxserver-image harness with a deploy-driven one: 01_bootstrap (6 empty containers + make install + DinD), 02_registration (per-host dedicated inventory via 'inventory provision' + full-mesh wg0.conf), 03_handshake ('deploy dedicated --id svc-net-wireguard' per host + all-pairs check). Adds the role's inventory-driven config path (mounts a per-host wg0.conf). NAT-flavor coverage follows once the mesh is green.
2026-07-09 13:47:46 +02:00
evangelostsak e242a28876 feat(svc-net-wireguard): flavor model, central subnet, NAT-on-host, beta lifecycle
Replaces mode+nat with a flavor list [server|client|nat]; declares the WireGuard internal subnet in group_vars/all/08_networks.yml; makes the masquerade task idempotent and applied on the deployed host (drops the DOCKER_IN_CONTAINER gate); bumps svc-net-wireguard and test-e2e-cli to lifecycle beta. (Revision 2 of req 026, PR #323 review.)
2026-07-09 13:47:46 +02:00
evangelostsak c6b20352dc refactor(svc-net-wireguard): move e2e harness to the test-e2e-cli contract
tests/ -> files/test/ (test.sh/local.sh/external.sh/mesh.sh) + templates/test.env.j2 (the test-e2e-cli discovery marker). README and requirement 026 updated to the adopted contract.
2026-07-09 13:47:45 +02:00
evangelostsak 5679326bb4 feat(svc-net-wireguard): add mode dispatch tasks and compose templates 2026-07-09 13:47:45 +02:00