Marisa: try consul and nomad
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
initrd.availableKernelModules = [ "xhci_pci" "usb_storage" "usbhid" "uas" "pcie-brcmstb"];
|
||||
loader = {
|
||||
grub.enable = false;
|
||||
generic-extlinux-compatible.enable= true;
|
||||
# generic-extlinux-compatible.enable= true;
|
||||
raspberryPi= {
|
||||
version = 4;
|
||||
firmwareConfig = "dtparam=sd_poll_once=on";
|
||||
|
@@ -3,7 +3,7 @@
|
||||
networking = {
|
||||
hostName = "Marisa";
|
||||
firewall = {
|
||||
allowedTCPPorts = [ 22 80 6060 5001 8800 8888 4444 4445 4646 ];
|
||||
allowedTCPPorts = [ 22 80 6060 5001 8800 8888 4444 4646 8500 8080 ];
|
||||
allowedUDPPorts = [ 17840 ];
|
||||
};
|
||||
wireless = {
|
||||
|
@@ -1,52 +1,124 @@
|
||||
{ lib, config, pkgs, ... }:
|
||||
{
|
||||
|
||||
# Add secrets to conul and nomad configs
|
||||
systemd.services.consul.preStart =
|
||||
let
|
||||
originalCfg = pkgs.writeText "consulConfiguration.json" (builtins.toJSON rec {
|
||||
data_dir = "/var/lib/consul";
|
||||
ui_config = {
|
||||
enabled = true;
|
||||
};
|
||||
bootstrap = true;
|
||||
log_level = "DEBUG";
|
||||
enable_syslog = true;
|
||||
datacenter = "dc1";
|
||||
bind_addr = "10.55.0.2";
|
||||
client_addr = bind_addr;
|
||||
primary_datacenter = "dc1";
|
||||
node_name = "Marisa";
|
||||
acl = {
|
||||
enabled = true;
|
||||
default_policy = "deny";
|
||||
tokens = {
|
||||
agent = "+++consul_marisa+++";
|
||||
};
|
||||
};
|
||||
server = true;
|
||||
connect = {
|
||||
enabled = true;
|
||||
};
|
||||
ports = {
|
||||
grpc = 8502;
|
||||
};
|
||||
encrypt = "+++consul_encryption+++";
|
||||
ca_file = "/var/consul-certs/consul-agent-ca.pem";
|
||||
cert_file = "/var/consul-certs/dc1-server-consul-0.pem";
|
||||
key_file = "/var/consul-certs/dc1-server-consul-0-key.pem";
|
||||
});
|
||||
in
|
||||
lib.mkForce ''
|
||||
mkdir -p /run/consul
|
||||
sed -e 's,+++consul_encryption+++,'"$(cat /var/secrets/consul_encryption.key)"',' \
|
||||
-e 's,+++consul_marisa+++,'"$(cat /var/secrets/consul_marisa.token)"',' \
|
||||
${originalCfg} > /run/consul/consul.json
|
||||
'';
|
||||
|
||||
systemd.services.nomad.after = [ "consul.service" ];
|
||||
systemd.services.nomad.preStart =
|
||||
let
|
||||
originalCfg = pkgs.writeText "nomadConfiguration.json"
|
||||
(builtins.toJSON rec {
|
||||
bind_addr = "0.0.0.0";
|
||||
data_dir = "/var/lib/nomad";
|
||||
disable_update_check = true;
|
||||
datacenter = "n1";
|
||||
log_file = "/var/log/nomad/nomad.log";
|
||||
server = {
|
||||
enabled = true;
|
||||
encrypt = "+++nomad_encryption+++";
|
||||
};
|
||||
plugin."docker" = {
|
||||
config = {
|
||||
allow_privileged = true;
|
||||
volumes.enabled = true;
|
||||
pull_activity_timeout = "30m";
|
||||
};
|
||||
};
|
||||
client = {
|
||||
options = {
|
||||
"docker.privileged.enabled" = true;
|
||||
"docker.volumes.enabled" = true;
|
||||
};
|
||||
enabled = true;
|
||||
cni_path = "${pkgs.cni-plugins}/bin";
|
||||
};
|
||||
vault = {
|
||||
enabled = true;
|
||||
token = "+++nomad_vault+++";
|
||||
address = "https://10.55.0.2:8800";
|
||||
ca_file = "/var/rootcert/cert.pem";
|
||||
cert_file = "/var/certs/cert.pem";
|
||||
key_file = "/var/certs/key.pem";
|
||||
allow_unauthenticated = false;
|
||||
create_from_role = "nomad-cluster";
|
||||
};
|
||||
consul = {
|
||||
address = "10.55.0.2:8500";
|
||||
token = "+++nomad_consul+++";
|
||||
ssl = false;
|
||||
allow_unauthenticated = false;
|
||||
ca_file = "/var/consul-certs/consul-agent-ca.pem";
|
||||
cert_file = "/var/consul-certs/dc1-server-consul-0.pem";
|
||||
key_file = "/var/consul-certs/dc1-server-consul-0-key.pem";
|
||||
auto_advertise = true;
|
||||
server_auto_join = true;
|
||||
client_auto_join = true;
|
||||
};
|
||||
acl = {
|
||||
enabled = true;
|
||||
};
|
||||
});
|
||||
in
|
||||
''
|
||||
mkdir -p /run/nomad
|
||||
sed -e 's,+++nomad_encryption+++,'"$(cat /var/secrets/nomad_encryption.key)"',' \
|
||||
-e 's,+++nomad_consul+++,'"$(cat /var/secrets/nomad_consul.token)"',' \
|
||||
-e 's,+++nomad_vault+++,'"$(cat /var/secrets/nomad_vault.token)"',' \
|
||||
${originalCfg} > /run/nomad/nomad.json
|
||||
'';
|
||||
services = {
|
||||
openssh = {
|
||||
enable = true;
|
||||
permitRootLogin = "yes";
|
||||
};
|
||||
nomad = {
|
||||
enable = false;
|
||||
package = pkgs.master.nomad;
|
||||
enable = true;
|
||||
enableDocker = true;
|
||||
settings = {
|
||||
bind_addr = "0.0.0.0";
|
||||
data_dir = "/var/lib/nomad";
|
||||
datacenter = "n1";
|
||||
log_file = "/var/log/nomad/nomad.log";
|
||||
server = {
|
||||
enabled = true;
|
||||
bootstrap_expect = 1;
|
||||
encrypt = "nY1vuN+1ecJkwJu0s2x6Ge6UX/txvTxVqNrDMqruMlg=";
|
||||
};
|
||||
client = {
|
||||
enabled = true;
|
||||
};
|
||||
vault = {
|
||||
enabled = true;
|
||||
token = "s.WaNfk6ZISRbwsEx43UokG3HU";
|
||||
address = "https://10.55.0.2:8800";
|
||||
ca_file = "/var/rootcert/cert.pem";
|
||||
cert_file = "/var/vault/cert.pem";
|
||||
key_file = "/var/vault/key.pem";
|
||||
allow_unauthenticated = false;
|
||||
create_from_role = "nomad-cluster";
|
||||
};
|
||||
consul = {
|
||||
address = "10.55.0.2:4444";
|
||||
ssl = true;
|
||||
allow_unauthenticated = false;
|
||||
auto_advertise = true;
|
||||
server_auto_join = true;
|
||||
client_auto_join = true;
|
||||
ca_file = "/var/certs/cert.pem";
|
||||
cert_file = "/var/vault/cert.pem";
|
||||
key_file = "/var/vault/key.pem";
|
||||
};
|
||||
acl = {
|
||||
enabled = true;
|
||||
};
|
||||
};
|
||||
dropPrivileges = false;
|
||||
extraPackages = with pkgs; [ consul ];
|
||||
extraSettingsPaths = lib.singleton "/run/nomad/nomad.json";
|
||||
};
|
||||
vault = {
|
||||
package = pkgs.vault-bin;
|
||||
@@ -61,31 +133,11 @@
|
||||
ui = true
|
||||
'';
|
||||
};
|
||||
|
||||
consul = {
|
||||
enable = false;
|
||||
webUi = true;
|
||||
extraConfig = rec {
|
||||
bootstrap = true;
|
||||
log_level = "DEBUG";
|
||||
enable_syslog = true;
|
||||
datacenter = "d1";
|
||||
bind_addr = "10.55.0.2";
|
||||
client_addr = bind_addr;
|
||||
primary_datacenter = "d1";
|
||||
node_name = "Marisa";
|
||||
server = true;
|
||||
connect = {
|
||||
enabled = true;
|
||||
};
|
||||
encrypt = "dXoYbVt1Rb1cTFTWVBGO6CaFIBmc90MPCjhqttBlXi0=";
|
||||
ca_file = "/var/rootcert/cert.pem";
|
||||
cert_file = "/var/certs/cert.pem";
|
||||
key_file = "/var/certs/key.pem";
|
||||
ports = {
|
||||
http = 4444;
|
||||
grpc = 4445;
|
||||
};
|
||||
};
|
||||
enable = true;
|
||||
package = pkgs.master.consul;
|
||||
extraConfigFiles = lib.singleton "/run/consul/consul.json";
|
||||
};
|
||||
vault-agent = {
|
||||
enable = true;
|
||||
@@ -117,6 +169,42 @@
|
||||
'';
|
||||
destination = "/var/secrets/wg.key";
|
||||
}
|
||||
{
|
||||
source = pkgs.writeText "consul_marisa.tpl" ''
|
||||
{{ with secret "kv/systems/Marisa/consul" }}{{ .Data.data.agentToken }}{{ end }}
|
||||
'';
|
||||
destination = "/var/secrets/consul_marisa.token";
|
||||
}
|
||||
{
|
||||
source = pkgs.writeText "consul_bootstrap.tpl" ''
|
||||
{{ with secret "kv/consul" }}{{ .Data.data.bootstrapToken }}{{ end }}
|
||||
'';
|
||||
destination = "/var/secrets/consul_bootstrap.token";
|
||||
}
|
||||
{
|
||||
source = pkgs.writeText "consul_encryption.tpl" ''
|
||||
{{ with secret "kv/consul" }}{{ .Data.data.encryptionKey }}{{ end }}
|
||||
'';
|
||||
destination = "/var/secrets/consul_encryption.key";
|
||||
}
|
||||
{
|
||||
source = pkgs.writeText "nomad_vault.tpl" ''
|
||||
{{ with secret "kv/nomad" }}{{ .Data.data.vaultToken }}{{ end }}
|
||||
'';
|
||||
destination = "/var/secrets/nomad_vault.token";
|
||||
}
|
||||
{
|
||||
source = pkgs.writeText "nomad_vault.tpl" ''
|
||||
{{ with secret "kv/nomad" }}{{ .Data.data.consulToken }}{{ end }}
|
||||
'';
|
||||
destination = "/var/secrets/nomad_consul.token";
|
||||
}
|
||||
{
|
||||
source = pkgs.writeText "nomad_encryption.tpl" ''
|
||||
{{ with secret "kv/nomad" }}{{ .Data.data.encryptionKey }}{{ end }}
|
||||
'';
|
||||
destination = "/var/secrets/nomad_encryption.key";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
@@ -134,10 +222,16 @@
|
||||
'';
|
||||
};
|
||||
gitea = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
appName = "Natto Tea";
|
||||
rootUrl = "https://git.weirdnatto.in/";
|
||||
cookieSecure = true;
|
||||
dump = {
|
||||
enable = true;
|
||||
backupDir = "/tmp/gitea";
|
||||
type = "tar.gz";
|
||||
file = "gitnigger";
|
||||
};
|
||||
httpPort = 5001;
|
||||
database = rec {
|
||||
createDatabase = false;
|
||||
@@ -169,5 +263,7 @@
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOSQnDNrNP69tIK7U2D7qaMjycfIjpgx0at4U2D5Ufib"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK5V/hdkTTQSkDLXaEwY8xb/T8+sWtw5c6UjYOPaTrO8"
|
||||
];
|
||||
security.pki.certificateFiles = [ ../../cert.pem ];
|
||||
security.pki.certificateFiles = [ ../../cert.pem ../../consul-agent-ca.pem ];
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user