From 1911481101e15463c8aecbdc03a6ce5b63b0d68f Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Fri, 1 Jan 2021 23:13:14 +0100 Subject: Generating DNS too. --- src/main/resources/io/trygvis/rules/dba/dba.drl | 6 +++ .../resources/io/trygvis/rules/engine/default.drl | 15 ++++++ .../resources/io/trygvis/rules/machine/machine.drl | 2 - .../io/trygvis/rules/terraform/terraform.drl | 60 ++++++++++++++++++++++ 4 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/io/trygvis/rules/engine/default.drl create mode 100644 src/main/resources/io/trygvis/rules/terraform/terraform.drl (limited to 'src/main/resources/io/trygvis') diff --git a/src/main/resources/io/trygvis/rules/dba/dba.drl b/src/main/resources/io/trygvis/rules/dba/dba.drl index 7beceef..7df1c5d 100644 --- a/src/main/resources/io/trygvis/rules/dba/dba.drl +++ b/src/main/resources/io/trygvis/rules/dba/dba.drl @@ -1 +1,7 @@ package io.trygvis.rules.dba; + + +rule "Dba" + when + then +end diff --git a/src/main/resources/io/trygvis/rules/engine/default.drl b/src/main/resources/io/trygvis/rules/engine/default.drl new file mode 100644 index 0000000..090fddf --- /dev/null +++ b/src/main/resources/io/trygvis/rules/engine/default.drl @@ -0,0 +1,15 @@ +package io.trygvis.rules.engine; +import java.util.Map +import org.apache.commons.io.FileSystem +import org.apache.commons.io.FileUtils +import java.io.File + +rule "Clean directories" + agenda-group "init" +when + not(KeyValue(key == "rm-gen")); +then + System.out.println("Cleaning gen!"); + FileUtils.deleteDirectory(new File("gen")); + insert(new KeyValue("rm-gen", null)); +end diff --git a/src/main/resources/io/trygvis/rules/machine/machine.drl b/src/main/resources/io/trygvis/rules/machine/machine.drl index 45df925..df0d002 100644 --- a/src/main/resources/io/trygvis/rules/machine/machine.drl +++ b/src/main/resources/io/trygvis/rules/machine/machine.drl @@ -9,6 +9,4 @@ rule "New machine" when $container: Container() then - insert(DnsEntry.a($container.name + ".machine.acme.org")); - insert(DnsEntry.aaaa($container.name + ".machine.acme.org")); end diff --git a/src/main/resources/io/trygvis/rules/terraform/terraform.drl b/src/main/resources/io/trygvis/rules/terraform/terraform.drl new file mode 100644 index 0000000..1de3123 --- /dev/null +++ b/src/main/resources/io/trygvis/rules/terraform/terraform.drl @@ -0,0 +1,60 @@ +package io.trygvis.rules.terraform + +import io.trygvis.rules.dba.Cluster +import io.trygvis.rules.dba.Container +import io.trygvis.rules.machine.Machine +import io.trygvis.rules.dns.DnsEntry +import io.trygvis.rules.dns.DnsEntryTerraformExpression +import java.util.Map; + +global io.trygvis.rules.engine.TemplateEngine te; + +declare ScalewayMachine + machine : Machine + key : String + fqdn : String +end + +rule "Terraform for Machine" +when + $machine: Machine() +then + var fqdn = "%s.machine.acme.com".formatted($machine.name); + var a = DnsEntry.a(fqdn); + var aaaa = DnsEntry.aaaa(fqdn); + + var scw = new ScalewayMachine(); + scw.setKey($machine.name); + scw.setMachine($machine); + scw.setFqdn(fqdn); + + var ipv4 = "scaleway_instance_ip.%s.address".formatted($machine.name); +// var ipv6 = "scaleway_instance_server.%s.public_ipv6.address".formatted($machine.name); + + insert(scw); + insert(a); + insert(aaaa); + insert(new DnsEntryTerraformExpression(a, $machine.name, ipv4)); +// insert(new DnsEntryValue(aaaa, ipv6)); +end + +rule "TF for TerraformMachine" +when + $m: Machine() + $scw: ScalewayMachine(machine == $m) +then + var path = "platform/terraform/%s.tf".formatted($scw.getKey()); + te.template("terraform-machine", path, Map.of("m", $m, "scw", $scw)); +end + +rule "Terraform for DNS" +when + $entry: DnsEntry() + $tf : DnsEntryTerraformExpression(entry == $entry) +then + var path = "dns/%s.tf".formatted($tf.key); + te.template("terraform-record-set", path, Map.of( + "entry", $entry, + "tf", $tf) + ); +end -- cgit v1.2.3