From ede2372547db659e7b0e9cfd3b531ff542018229 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Wed, 6 Jan 2021 21:01:33 +0100 Subject: Generating Wireguard files too. --- .../io/trygvis/rules/wireguard/wireguard.drl | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'module/ri-wireguard/src/main/resources/io/trygvis/rules/wireguard/wireguard.drl') diff --git a/module/ri-wireguard/src/main/resources/io/trygvis/rules/wireguard/wireguard.drl b/module/ri-wireguard/src/main/resources/io/trygvis/rules/wireguard/wireguard.drl index 342cbb5..06b9bbf 100644 --- a/module/ri-wireguard/src/main/resources/io/trygvis/rules/wireguard/wireguard.drl +++ b/module/ri-wireguard/src/main/resources/io/trygvis/rules/wireguard/wireguard.drl @@ -6,6 +6,9 @@ import io.trygvis.rules.machine.Machine; import io.trygvis.rules.network.Ipv4Address import io.trygvis.rules.network.Ipv4Cidr import io.trygvis.rules.network.IpCalc +import java.util.Map + +global io.trygvis.rules.engine.TemplateEngine te; dialect "mvel" @@ -103,3 +106,38 @@ then System.out.printf("IP: net=%s, pool.role=%s, host=%s, ip=%s%n", $net.name, $pool.role, $host.name, $ip); insert(new WgIpAllocation($host.name, $pool.role, $ip)) end + +rule "Generate per-net files" + agenda-group "generate" + salience 10 +when + $net : WgNet() +then + te.template("wireguard/ansible", "wireguard-" + $net.name + ".yml", Map.of( + "net", $net + )); + + // TODO: Generate hosts file +end + +rule "Generate per-net, per-host files" + agenda-group "generate" + salience 10 +when + $net : WgNet() + $host : WgHost(net == $net.name) + $link : WgIpAllocation(host == $host.name, role == "link") + // Needs to be a sub-cidr of the WgNet network cidr, not a specific IP + $network : WgIpAllocation(host == $host.name, role == "network") +then + System.out.printf("%s : %s%n", $net.name, $host.name); + + String output = "host_vars/%s/wireguard.yml".formatted($host.name); + + te.template("wireguard/ansible-host", output, Map.of( + "net", $net, + "host", $host, + "link", $link.ip, + "network", "TODO" + )); +end -- cgit v1.2.3