48 lines
1023 B
Nix
48 lines
1023 B
Nix
{ pkgs, config, lib, ... }:
|
|
let
|
|
servers = [
|
|
"c1"
|
|
"c2"
|
|
"c3"
|
|
];
|
|
in
|
|
{
|
|
options.clusterRole.consulServer = lib.mkEnableOption "Consul server mode";
|
|
|
|
config = {
|
|
services.consul = {
|
|
enable = true;
|
|
webUi = true;
|
|
interface.advertise = "eno1";
|
|
extraConfig = {
|
|
client_addr = "0.0.0.0";
|
|
datacenter = "alo";
|
|
server = config.clusterRole.consulServer;
|
|
bootstrap_expect = if config.clusterRole.consulServer 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
|
|
];
|
|
};
|
|
};
|
|
}
|