diff --git a/VERSION b/VERSION index b54183a..ff710f5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.101 \ No newline at end of file +1.2.102 \ No newline at end of file diff --git a/internal/services/ipaddresses/apply.go b/internal/services/ipaddresses/apply.go index e5400c2..2a28ebc 100644 --- a/internal/services/ipaddresses/apply.go +++ b/internal/services/ipaddresses/apply.go @@ -40,11 +40,17 @@ func (g *Generator) render(ctx context.Context, excludeEthernet bool) error { prefix int } + // is_vip-Adressen werden NIE statisch gebunden — sie gehören + // ausschließlich keepalived (nur der VRRP-Master trägt die VIP). Würde + // der Apply sie statisch binden, läge die VIP nach einem Failover auf + // BEIDEN Nodes (statisch hier + keepalived drüben) → Duplicate-IP/ARP- + // Konflikt → Tunnel/LAN bricht. Deshalb hart ausschließen. q := ` SELECT ni.name, ia.address, ia.prefix FROM ip_addresses ia JOIN network_interfaces ni ON ni.id = ia.interface_id - WHERE ia.active = true` + WHERE ia.active = true + AND ia.is_vip = false` if excludeEthernet { q += ` AND ni.type != 'ethernet'`