45 lines
904 B
Nix
45 lines
904 B
Nix
{ pkgs, config, ... }:
|
|
let
|
|
servers = [
|
|
"c1"
|
|
"c2"
|
|
"c3"
|
|
];
|
|
server_enabled = builtins.elem config.networking.hostName servers;
|
|
in
|
|
{
|
|
services.consul = {
|
|
enable = true;
|
|
webUi = true;
|
|
interface.advertise = "eno1";
|
|
extraConfig = {
|
|
client_addr = "0.0.0.0";
|
|
datacenter = "alo";
|
|
server = server_enabled;
|
|
bootstrap_expect = if server_enabled then (builtins.length servers + 2) / 2 else null;
|
|
retry_join = builtins.filter (elem: elem != config.networking.hostName) servers;
|
|
telemetry = {
|
|
prometheus_retention_time = "24h";
|
|
disable_hostname = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
environment.persistence."/persist".directories = [ "/var/lib/consul" ];
|
|
|
|
networking.firewall = {
|
|
allowedTCPPorts = [
|
|
8600
|
|
8500
|
|
8301
|
|
8302
|
|
8300
|
|
];
|
|
allowedUDPPorts = [
|
|
8600
|
|
8301
|
|
8302
|
|
];
|
|
};
|
|
}
|