36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Jsonnet
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Jsonnet
		
	
	
	
	
	
local config = import "../config/config.libsonnet";
 | 
						|
 | 
						|
{
 | 
						|
    local terraform = self,
 | 
						|
    local rname (server, suffix) = "host_" + server.name + "_" + suffix,
 | 
						|
 | 
						|
    HcloudInstance:: {
 | 
						|
        name: error "Instance must have field: name",
 | 
						|
        image: "debian-11",
 | 
						|
        server_type: error "Instance must have field: server_type",
 | 
						|
        location: "fsn1"
 | 
						|
    },
 | 
						|
 | 
						|
    HcloudSSHKey:: {
 | 
						|
        name: error "Key must have field: name",
 | 
						|
        public_key: error "Key must have field: public_key",
 | 
						|
        labels: { source: "terraform" }
 | 
						|
    },
 | 
						|
 | 
						|
    HdnsRecord:: {
 | 
						|
        zone_id: "${hetznerdns_zone.infra.id}",
 | 
						|
        name: error "Record must have field: name",
 | 
						|
        value: error "Record must have field: value",
 | 
						|
        type: error "Record must have field: type",
 | 
						|
        ttl: config.defaultTTL
 | 
						|
    },
 | 
						|
 | 
						|
    serverDnsRecords: function (s) {
 | 
						|
        local attr (s, n) = "${hcloud_server." + s.name + "." + n + "}",
 | 
						|
 | 
						|
        [rname(s, "A")]: terraform.HdnsRecord{ name: s.publicSubdomain, value: attr(s, "ipv4_address"), type: "A" },
 | 
						|
        [rname(s, "AAAA")]: terraform.HdnsRecord{ name: s.publicSubdomain, value: attr(s, "ipv6_address"), type: "AAAA" },
 | 
						|
        [rname(s, "VPN")]: terraform.HdnsRecord{ name: s.internalSubdomain, value: s.wireguardIp, type: "AAAA" },
 | 
						|
    }
 | 
						|
}
 |