luminare.gameserver · v0.2.0
0008. Soft dependency on the infra_edge firewall layout
- Status: accepted
- Date: 2026-10-21
Context
Game servers need open ports (the game port) and closed ones (the admin panel). The sibling
collection luminare.infra_edge hardens hosts; its base role owns /etc/nftables.conf with
input policy drop and a last line include "/etc/nftables.d/*.nft". A Galaxy-style dependency on
it would force every user to install it, and it cannot resolve while both collections are
installed from git tags.
Considered options
dependencies: {"luminare.infra_edge": …}ingalaxy.yml, and roles that call itsbaserole.- No dependency; roles here own their firewall rules as drop-in files in
/etc/nftables.d/that fit thebaserole’s layout. - Each role writes a complete nftables configuration.
Decision
Chosen option 2. galaxy.yml lists only community collections that the roles use. A role here
that needs a port writes /etc/nftables.d/<NN>-<role>.nft with add rule inet filter input … accept lines only (the input policy is drop, so drop-ins only accept), writes it only when the
directory exists or <role>_firewall_manage is true, requires an /etc/nftables.conf that
defines table inet filter and includes /etc/nftables.d/*.nft (otherwise the drop-in would
validate but never be loaded), and validates with nft -c -f /etc/nftables.conf before a
reload. Numbers: 40 for the admin panel, 45 for the game port. Molecule scenarios create a
minimal file of the same shape in prepare.yml instead of running the other collection.
Consequences
- Good: works on hosts hardened by infra_edge and on hosts with their own nftables setup.
- Good: no cross-repository dependency in tests.
- Bad: the layout is a documented convention; a change in infra_edge needs a matching change here.
Not affiliated with or endorsed by Cfx.re, Rockstar Games or Take-Two.
docs/adr/0008-soft-dependency-on-the-infra-edge-firewall-layout.md on GitHub
Licensed under Apache-2.0. Source: luminare-dev/ansible-collection-gameserver at v0.2.0.