infrastructure/machines/core-services-01/subZone.nix
2024-01-02 00:39:33 +01:00

103 lines
2.2 KiB
Nix

{ config, lib, dns, ... }:
with dns.lib.combinators;
let
my = config.my;
web01 = {
CNAME = ["web01.dmi01.infra.dgnum.eu."];
};
public-cof-ips = {
A = [ "45.13.104.27" ];
AAAA = [ "2001:470:1f13:187:c08e:feff:fe4d:f5f5" ];
};
delegateACMEDNSChallenge = acme: { _acme-challenge.CNAME = [ acme ]; };
mkProxyRecord = AAAA: { inherit AAAA; A = [ "45.13.104.29" ]; };
dualstack = {
A = my.ipv4;
AAAA = my.ipv6.standard;
};
in
dualstack // {
SOA = {
nameServer = "ns1.${my.subZone}.";
adminEmail = my.email;
serial = 2023122101; # Y M D Version
};
NS = [
"ns1.${my.subZone}."
];
CAA = letsEncrypt my.email;
subdomains = {
git = web01;
drone = dualstack;
monitoring = dualstack;
auth = dualstack;
push = dualstack;
core01 = dualstack;
ns1 = dualstack;
# Non-beta service
# Outline
notion = web01;
# S3 API
s3 = web01;
# CDN API
cdn = web01;
gdd = {
NS = [ "ns1.gdd.${my.subZone}." ];
subdomains.ns1.AAAA = [ "2001:470:1f13:187:350a:214a:639c:b97b" ];
AAAA = [ "2001:470:1f13:187:350a:214a:639c:b97b" ];
};
acme = {
NS = [ "acme.${my.subZone}." ];
A = my.ipv4;
AAAA = [ my.ipv6.acme ];
};
beta = public-cof-ips // {
subdomains = {
traque = mkProxyRecord [ "2001:470:1f13:187:f053:94ff:fe46:9664" ];
nuage = web01;
todo = web01;
minecraft = web01;
factorio = web01;
home = web01;
pads = web01 // {
subdomains = {
api = web01;
files = web01;
sandbox = web01;
};
};
docs = web01;
jurisprudens = web01;
rstudio = web01;
};
};
internal.subdomains = {
# Routers
router01.A = [ "10.1.1.1" ];
router02.A = [ "10.1.1.1" ];
router03.A = [ "10.1.1.120" ];
# Hypervisors
pve01 = {
A = [ "10.1.1.10" ];
subdomains = {
idrac.A = [ "10.1.2.20" ];
} // delegateACMEDNSChallenge "7c663a49-151c-4eea-a34f-725ff9f19d41.acme.rz.ens.wtf.";
};
# Core machines
core01.A = [ "10.1.1.20" ];
};
};
}