33 lines
840 B
Nix
33 lines
840 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 ];
|
|
};
|
|
}
|