diff options
Diffstat (limited to 'src/main/resources/io/trygvis/rules/terraform/terraform.drl')
-rw-r--r-- | src/main/resources/io/trygvis/rules/terraform/terraform.drl | 60 |
1 files changed, 60 insertions, 0 deletions
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 |