feat: azion-scheduler

This commit is contained in:
2026-04-30 21:42:13 +02:00
parent 6c5e2f896b
commit 097d676291
9 changed files with 142 additions and 79 deletions

154
flake.lock generated
View File

@@ -28,11 +28,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1774977190, "lastModified": 1777399938,
"narHash": "sha256-C4FJ0UhbHQngXqPZNPrNShb0tFXYXFdYdXSg1WezKes=", "narHash": "sha256-xXPqUQezDdDtF8MbpZnwD1HkybOYwF92evx8rJ6OXCU=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "a05558b8112574fc4e8e82094ce1420ee02c0770", "rev": "9a91f1ee0cf011a7eaf1f16a9e17610b0457e055",
"revCount": 67, "revCount": 85,
"type": "git", "type": "git",
"url": "https://code.m3ta.dev/m3tam3re/AGENTS" "url": "https://code.m3ta.dev/m3tam3re/AGENTS"
}, },
@@ -42,6 +42,22 @@
} }
}, },
"agents_2": { "agents_2": {
"flake": false,
"locked": {
"lastModified": 1777399938,
"narHash": "sha256-xXPqUQezDdDtF8MbpZnwD1HkybOYwF92evx8rJ6OXCU=",
"ref": "refs/heads/master",
"rev": "9a91f1ee0cf011a7eaf1f16a9e17610b0457e055",
"revCount": 85,
"type": "git",
"url": "https://code.m3ta.dev/m3tam3re/AGENTS"
},
"original": {
"type": "git",
"url": "https://code.m3ta.dev/m3tam3re/AGENTS"
}
},
"agents_3": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1771353084, "lastModified": 1771353084,
@@ -57,6 +73,26 @@
"url": "https://code.m3ta.dev/m3tam3re/AGENTS" "url": "https://code.m3ta.dev/m3tam3re/AGENTS"
} }
}, },
"azion-scheduler": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1777529010,
"narHash": "sha256-1Ig0lcwYTxAgskM6RM/R6jkx6Q5W5jAkEL+0DomaHhk=",
"ref": "refs/heads/main",
"rev": "dee96ee1cc75a16a04803a735dc23ca3f0f300fb",
"revCount": 4,
"type": "git",
"url": "https://git.az-gruppe.com/AZ-Intec-GmbH/AZion"
},
"original": {
"type": "git",
"url": "https://git.az-gruppe.com/AZ-Intec-GmbH/AZion"
}
},
"base16-schemes": { "base16-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -107,11 +143,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1771437256, "lastModified": 1776249299,
"narHash": "sha256-bLqwib+rtyBRRVBWhMuBXPCL/OThfokA+j6+uH7jDGU=", "narHash": "sha256-Dt9t1TGRmJFc0xVYhttNBD6QsAgHOHCArqGa0AyjrJY=",
"owner": "numtide", "owner": "numtide",
"repo": "blueprint", "repo": "blueprint",
"rev": "06ee7190dc2620ea98af9eb225aa9627b68b0e33", "rev": "56131e8628f173d24a27f6d27c0215eff57e40dd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -151,7 +187,6 @@
"llm-agents", "llm-agents",
"flake-parts" "flake-parts"
], ],
"import-tree": "import-tree",
"nixpkgs": [ "nixpkgs": [
"llm-agents", "llm-agents",
"nixpkgs" "nixpkgs"
@@ -166,15 +201,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1770895533, "lastModified": 1777369708,
"narHash": "sha256-v3QaK9ugy9bN9RXDnjw0i2OifKmz2NnKM82agtqm/UY=", "narHash": "sha256-1xW7cRZNsFNPQD+cE0fwnLVStnDth0HSoASEIFeT7uI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "bun2nix", "repo": "bun2nix",
"rev": "c843f477b15f51151f8c6bcc886954699440a6e1", "rev": "e659e1cc4b8e1b21d0aa85f1c481f9db61ecfa98",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "staging-2.1.0",
"repo": "bun2nix", "repo": "bun2nix",
"type": "github" "type": "github"
} }
@@ -185,7 +221,7 @@
"nix-ai-tools", "nix-ai-tools",
"flake-parts" "flake-parts"
], ],
"import-tree": "import-tree_2", "import-tree": "import-tree",
"nixpkgs": [ "nixpkgs": [
"nix-ai-tools", "nix-ai-tools",
"nixpkgs" "nixpkgs"
@@ -321,11 +357,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772408722, "lastModified": 1775087534,
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", "narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", "rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -493,21 +529,6 @@
"type": "github" "type": "github"
} }
}, },
"import-tree_2": {
"locked": {
"lastModified": 1763762820,
"narHash": "sha256-ZvYKbFib3AEwiNMLsejb/CWs/OL/srFQ8AogkebEPF0=",
"owner": "vic",
"repo": "import-tree",
"rev": "3c23749d8013ec6daa1d7255057590e9ca726646",
"type": "github"
},
"original": {
"owner": "vic",
"repo": "import-tree",
"type": "github"
}
},
"llm-agents": { "llm-agents": {
"inputs": { "inputs": {
"blueprint": "blueprint", "blueprint": "blueprint",
@@ -518,11 +539,11 @@
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1774928491, "lastModified": 1777527214,
"narHash": "sha256-blqxzOmDdR35BjHeA8V6NeoQot4mysWy8N8ZMiHyEsk=", "narHash": "sha256-xoe/d6DI99r3MWlbS1+3A82NnD6uMpdgEQNqn7cp7Y0=",
"owner": "numtide", "owner": "numtide",
"repo": "llm-agents.nix", "repo": "llm-agents.nix",
"rev": "fb1dfb5960aa4b8a91995f8f99ec2452e5052dbe", "rev": "de2a3af876b071dfc43afa14976edfc89fd585b4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -533,18 +554,18 @@
}, },
"m3ta-nixpkgs": { "m3ta-nixpkgs": {
"inputs": { "inputs": {
"agents": "agents_2",
"basecamp": "basecamp", "basecamp": "basecamp",
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_4",
"nixpkgs-master": "nixpkgs-master", "nixpkgs-master": "nixpkgs-master",
"opencode": "opencode",
"openspec": "openspec" "openspec": "openspec"
}, },
"locked": { "locked": {
"lastModified": 1775213085, "lastModified": 1777557677,
"narHash": "sha256-PwE/PkgxsX8mq5j+dGUKVlHmzX9AU/ZaitAnvkzkPMA=", "narHash": "sha256-+5a8DtKMXIwh36oO/M8M33y7KejZFqbqArKjVPi/1jk=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "53220ae007f21fca6247bb707fceb27ac8f665ff", "rev": "14d906ef9355b1910c709671c7449f40badb10f2",
"revCount": 210, "revCount": 269,
"type": "git", "type": "git",
"url": "https://code.m3ta.dev/m3tam3re/nixpkgs" "url": "https://code.m3ta.dev/m3tam3re/nixpkgs"
}, },
@@ -557,7 +578,7 @@
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_7", "nixpkgs": "nixpkgs_7",
"nixpkgs-master": "nixpkgs-master_2", "nixpkgs-master": "nixpkgs-master_2",
"opencode": "opencode_2" "opencode": "opencode"
}, },
"locked": { "locked": {
"lastModified": 1771355771, "lastModified": 1771355771,
@@ -737,11 +758,11 @@
}, },
"nixpkgs-master": { "nixpkgs-master": {
"locked": { "locked": {
"lastModified": 1775044794, "lastModified": 1777557494,
"narHash": "sha256-WHIZHvguLKWOcmAXdpOjrrSb528+bJU2geyAWPa1Yzc=", "narHash": "sha256-sOKGyYzLyhAWgjBYJRAx4Zjhl1hbhh0cyCn0n0ZNExE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1de4a8e478f9f7cf3143967e8de444be35114c39", "rev": "26613c0bd28d8b5976afe6e7d678b76136ab4fb0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -801,11 +822,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1774610258, "lastModified": 1776949667,
"narHash": "sha256-HaThtroVD9wRdx7KQk0B75JmFcXlMUoEdDFNOMOlsOs=", "narHash": "sha256-GMSVw35Q+294GlrTUKlx087E31z7KurReQ1YHSKp5iw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "832efc09b4caf6b4569fbf9dc01bec3082a00611", "rev": "01fbdeef22b76df85ea168fbfe1bfd9e63681b30",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -817,11 +838,11 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1774709303, "lastModified": 1777268161,
"narHash": "sha256-D3Q07BbIA2KnTcSXIqqu9P586uWxN74zNoCH3h2ESHg=", "narHash": "sha256-bxrdOn8SCOv8tN4JbTF/TXq7kjo9ag4M+C8yzzIRYbE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", "rev": "1c3fe55ad329cbcb28471bb30f05c9827f724c76",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -917,28 +938,6 @@
} }
}, },
"opencode": { "opencode": {
"inputs": {
"nixpkgs": [
"m3ta-nixpkgs",
"nixpkgs-master"
]
},
"locked": {
"lastModified": 1774807340,
"narHash": "sha256-OV76SWqiBguUupfbkJMBVrslJoTqSh4epNjEp/HE/cY=",
"owner": "anomalyco",
"repo": "opencode",
"rev": "e7f94f9b9a3bd8742330e4a7ba8573ac21042c01",
"type": "github"
},
"original": {
"owner": "anomalyco",
"ref": "v1.3.6",
"repo": "opencode",
"type": "github"
}
},
"opencode_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"zugferd-service", "zugferd-service",
@@ -969,11 +968,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772182342, "lastModified": 1777556999,
"narHash": "sha256-9Q0iUyZGcDPLdgvnrBN3GumV8g9akV8TFb8bFkD1yYs=", "narHash": "sha256-HfFlRwR8IMjudRttN4T8L3DJKnNlpWfeNzQPly/HaRY=",
"owner": "Fission-AI", "owner": "Fission-AI",
"repo": "OpenSpec", "repo": "OpenSpec",
"rev": "afdca0d5dab1aa109cfd8848b2512333ccad60c3", "rev": "347f0277e3be3549cd85cdea364fbd7710f1922b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -986,6 +985,7 @@
"inputs": { "inputs": {
"agenix": "agenix", "agenix": "agenix",
"agents": "agents", "agents": "agents",
"azion-scheduler": "azion-scheduler",
"deploy-rs": "deploy-rs", "deploy-rs": "deploy-rs",
"disko": "disko", "disko": "disko",
"home-manager": "home-manager_2", "home-manager": "home-manager_2",
@@ -1135,11 +1135,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1773297127, "lastModified": 1775636079,
"narHash": "sha256-6E/yhXP7Oy/NbXtf1ktzmU8SdVqJQ09HC/48ebEGBpk=", "narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "71b125cd05fbfd78cab3e070b73544abe24c5016", "rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1210,7 +1210,7 @@
}, },
"zugferd-service": { "zugferd-service": {
"inputs": { "inputs": {
"agents": "agents_2", "agents": "agents_3",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"m3ta-nixpkgs": "m3ta-nixpkgs_2", "m3ta-nixpkgs": "m3ta-nixpkgs_2",
"nixpkgs": "nixpkgs_8" "nixpkgs": "nixpkgs_8"

View File

@@ -79,6 +79,10 @@
zugferd-service = { zugferd-service = {
url = "git+https://git.az-gruppe.com/AZ-Intec-GmbH/zugferd-service"; url = "git+https://git.az-gruppe.com/AZ-Intec-GmbH/zugferd-service";
}; };
azion-scheduler = {
url = "git+https://git.az-gruppe.com/AZ-Intec-GmbH/AZion";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { outputs = {
@@ -184,6 +188,7 @@
./hosts/AZ-PRM-1 ./hosts/AZ-PRM-1
agenix.nixosModules.default agenix.nixosModules.default
inputs.disko.nixosModules.disko inputs.disko.nixosModules.disko
inputs.azion-scheduler.nixosModules.default
]; ];
}; };
AZ-LT-NIX = inputs.nixpkgs-unstable.lib.nixosSystem { AZ-LT-NIX = inputs.nixpkgs-unstable.lib.nixosSystem {

View File

@@ -72,7 +72,6 @@
alejandra alejandra
basecamp basecamp
bc bc
claude-code
comma comma
coreutils coreutils
devenv devenv

View File

@@ -1,6 +1,9 @@
{ {
age = { age = {
secrets = { secrets = {
azion-env = {
file = ../../secrets/azion-env.age;
};
traefik-env = { traefik-env = {
file = ../../secrets/traefik-env.age; file = ../../secrets/traefik-env.age;
}; };

View File

@@ -0,0 +1,35 @@
{
config,
lib,
inputs,
pkgs,
...
}: let
portUtils = import ../../../lib/port-utils.nix {inherit lib;};
servicePort = portUtils.getPort "azion-scheduler" "AZ-PRM-1";
schedulerProxyPort = portUtils.getPort "azion-scheduler-proxy" "AZ-PRM-1";
in {
services.azion-scheduler = {
enable = true;
package = inputs.azion-scheduler.packages.${pkgs.stdenv.hostPlatform.system}.default;
port = servicePort;
proxyPort = schedulerProxyPort;
environmentFile = config.age.secrets.azion-env.path;
};
# Traefik configuration
services.traefik.dynamicConfigOptions.http = {
services.azion-scheduler.loadBalancer.servers = [
{url = "http://localhost:${toString servicePort}/";}
];
routers.azion-scheduler = {
rule = "Host(`azion.l.az-gruppe.com`)";
tls = {
certResolver = "ionos";
};
service = "azion-scheduler";
entrypoints = "websecure";
};
};
}

View File

@@ -1,7 +1,7 @@
{ {
imports = [ imports = [
./containers ./containers
./azion-scheduler.nix
./n8n.nix ./n8n.nix
./netbird.nix ./netbird.nix
./pgadmin.nix ./pgadmin.nix

View File

@@ -18,6 +18,8 @@
zammad-hr = 3036; zammad-hr = 3036;
netbird = 3038; netbird = 3038;
zammad-hr-elasticsearch = 3037; zammad-hr-elasticsearch = 3037;
azion-scheduler = 3039;
azion-scheduler-proxy = 3049;
# Docker services (3100-3199 range) # Docker services (3100-3199 range)
librechat = 3040; librechat = 3040;

View File

@@ -11,6 +11,7 @@ let
users = [sascha.koenig]; users = [sascha.koenig];
systems = [AZ-CLD-1 AZ-LT-NIX AZ-PRM-1]; systems = [AZ-CLD-1 AZ-LT-NIX AZ-PRM-1];
in { in {
"secrets/azion-env.age".publicKeys = systems ++ users;
"secrets/server.crt.age".publicKeys = systems ++ users; "secrets/server.crt.age".publicKeys = systems ++ users;
"secrets/server.key.age".publicKeys = systems ++ users; "secrets/server.key.age".publicKeys = systems ++ users;
"secrets/traefik-env.age".publicKeys = systems ++ users; "secrets/traefik-env.age".publicKeys = systems ++ users;

18
secrets/azion-env.age Normal file
View File

@@ -0,0 +1,18 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFpoVnNlZyBEK3Vo
VUJGUExER0VDZHROdkN6S0pPRTVXSEhvVWpvV1FSNnZUcStLalRNCk9DZGN2ZFZi
cWlhUDBlQkFZSHVxN1ErYmdhTW5ZbVhGb20yZmtnY1MvWEEKLT4gc3NoLWVkMjU1
MTkgU3JIYXFBIEFUc3B1alN0NElwcDl1empxeVFack9hUzFGYlg1bUVRbllNWkNQ
MUlBRVkKaUNQNGhSV0pQQ2VGQXFHM2s1YmFPMTJUWUpZVFNrdTFoNmxlTExYeFc4
dwotPiBzc2gtZWQyNTUxOSBsR3FWWmcgeG9ZZWNIUHo5c09kMWxmRXJieXJOV0Vo
ajEzYTdCRmp5aVlwT2p2Y1ZnYwo4M01URmZwY21idzdQSkszYW5qcVRKdVpkaVRR
NXhiSVg1MmlMVlpGNEdvCi0+IHNzaC1lZDI1NTE5IENTTXloZyA5U2V6eEl6ZVoz
L0RCblpuR1Y2dGhxZC9YREFhYVBrOGVESldZOHlmSEVVCkEwenhZbkJNK2RoaSsr
Tm1DWXN4TjBldXN4VlByN2IrZ2NvQ3c5dEdJUFkKLT4gVid1fXs+LWdyZWFzZSBc
dSBLCjdpZ251emhPemFyeEQzYVZhTE85WUtKemhmWVBIeUp1Ci0tLSA3cTcva3dC
NytiSTdXMFVkUmkzZ1psbndvMTcwVk42bXArdm1ZSXA3aXNnCgcCLDRJcYeVXN7A
OHS0d2J+1TEvSHAEtrnTQjTqYl7ceaS8TFYF/DekImVCoDBjKI2294On8eiCOlUX
V9k/GF4OVXQfLcvxhRSTj/h5G8kVXvOodjftlIrx07SVTdIaxJZNAEqyTQi89G8Q
Uxu4pKPJn53u3KGPga8xdxEbPwv2VTWp879z7ge3e2me4qT8VZagq06IkeTfbun9
Pq8qY6w=
-----END AGE ENCRYPTED FILE-----