cluster/services/dns: support alternative rewrite types in declarative dns
This commit is contained in:
parent
7ff75a72f5
commit
88754861db
2 changed files with 14 additions and 6 deletions
|
@ -17,9 +17,11 @@ let
|
||||||
configList = lib.mapAttrsToList (n: v: "${n}=${v}") cfg;
|
configList = lib.mapAttrsToList (n: v: "${n}=${v}") cfg;
|
||||||
in lib.concatStringsSep "\n" configList;
|
in lib.concatStringsSep "\n" configList;
|
||||||
|
|
||||||
rewriteRecords = lib.filterAttrs (_: record: record.rewriteTarget != null) cluster.config.dns.records;
|
rewriteRecords = lib.filterAttrs (_: record: record.rewrite.target != null) cluster.config.dns.records;
|
||||||
|
|
||||||
rewrites = lib.mapAttrsToList (_: record: "rewrite stop name exact ${record.name}.${record.root}. ${record.rewriteTarget}.") rewriteRecords;
|
rewrites = lib.mapAttrsToList (_: record: let
|
||||||
|
maybeEscapeRegex = str: if record.write.type == "regex" then "^${lib.escapeRegex str}$" else str;
|
||||||
|
in "rewrite stop name ${record.rewrite.type} ${record.name}${maybeEscapeRegex ".${record.root}."} ${record.rewrite.target}. answer auto") rewriteRecords;
|
||||||
|
|
||||||
rewriteConf = pkgs.writeText "coredns-rewrites.conf" (lib.concatStringsSep "\n" rewrites);
|
rewriteConf = pkgs.writeText "coredns-rewrites.conf" (lib.concatStringsSep "\n" rewrites);
|
||||||
in {
|
in {
|
||||||
|
|
|
@ -34,13 +34,19 @@ let
|
||||||
type = with types; nullOr str;
|
type = with types; nullOr str;
|
||||||
default = null;
|
default = null;
|
||||||
};
|
};
|
||||||
rewriteTarget = mkOption {
|
rewrite = {
|
||||||
type = with types; nullOr str;
|
target = mkOption {
|
||||||
default = null;
|
type = with types; nullOr str;
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
type = mkOption {
|
||||||
|
type = types.enum [ "exact" "substring" "prefix" "suffix" "regex" ];
|
||||||
|
default = "exact";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = {
|
config = {
|
||||||
rewriteTarget = mkIf (config.consulService != null) "${config.consulService}.${config.consulServicesRoot}";
|
rewrite.target = mkIf (config.consulService != null) "${config.consulService}.${config.consulServicesRoot}";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
in
|
in
|
||||||
|
|
Loading…
Add table
Reference in a new issue