photoncloud-monorepo/nix/modules/nix-nos/example-topology.nix
centra 3eeb303dcb feat: Batch commit for T039.S3 deployment
Includes all pending changes needed for nixos-anywhere:
- fiberlb: L7 policy, rule, certificate types
- deployer: New service for cluster management
- nix-nos: Generic network modules
- Various service updates and fixes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-13 04:34:51 +09:00

94 lines
2.2 KiB
Nix

# Example 3-node PlasmaCloud cluster topology
{ lib ? (import <nixpkgs> {}).lib }:
{
nix-nos = {
enable = true;
clusters = {
plasmacloud = {
name = "plasmacloud-cluster";
# Bootstrap node (first control-plane node by default)
bootstrapNode = "node01";
nodes = {
# Control plane node 1 (bootstrap)
node01 = {
role = "control-plane";
ip = "10.0.1.10";
raftPort = 2380;
apiPort = 2379;
services = [
"chainfire"
"flaredb"
"iam"
"creditservice"
"fiberlb"
"flashdns"
];
metadata = {
datacenter = "dc1";
rack = "rack1";
};
};
# Control plane node 2
node02 = {
role = "control-plane";
ip = "10.0.1.11";
raftPort = 2380;
apiPort = 2379;
services = [
"chainfire"
"flaredb"
"iam"
"creditservice"
"fiberlb"
"flashdns"
];
metadata = {
datacenter = "dc1";
rack = "rack2";
};
};
# Control plane node 3
node03 = {
role = "control-plane";
ip = "10.0.1.12";
raftPort = 2380;
apiPort = 2379;
services = [
"chainfire"
"flaredb"
"iam"
"creditservice"
"fiberlb"
"flashdns"
];
metadata = {
datacenter = "dc1";
rack = "rack3";
};
};
# Worker node (optional - for workload separation)
# node04 = {
# role = "worker";
# ip = "10.0.1.20";
# services = [
# "plasmavmc"
# "lightningstor"
# "k8shost"
# ];
# metadata = {
# datacenter = "dc1";
# rack = "rack1";
# };
# };
};
};
};
};
}