36 lines
1.1 KiB
Nix
36 lines
1.1 KiB
Nix
# Standalone cluster-config.json generator
|
|
# Usage: nix-build cluster-config-generator.nix --argstr hostname node01 --argstr clusterName plasmacloud
|
|
{ pkgs ? import <nixpkgs> {}
|
|
, hostname ? "node01"
|
|
, clusterName ? "plasmacloud"
|
|
, topologyFile ? ./example-topology.nix
|
|
}:
|
|
|
|
let
|
|
# Import topology module
|
|
lib = pkgs.lib;
|
|
clusterConfigLib = import ../cluster-config-lib.nix { inherit lib; };
|
|
|
|
# Evaluate the topology file
|
|
topologyEval = import topologyFile { inherit lib; };
|
|
|
|
# Get the cluster configuration
|
|
cluster = topologyEval.nix-nos.clusters.${clusterName} or (throw "Cluster ${clusterName} not found");
|
|
|
|
# Generate cluster config
|
|
clusterConfig = clusterConfigLib.mkClusterConfig {
|
|
inherit cluster hostname;
|
|
bootstrapNodeName =
|
|
if cluster ? bootstrapNode && cluster.bootstrapNode != null
|
|
then cluster.bootstrapNode
|
|
else null;
|
|
};
|
|
|
|
# Convert to JSON
|
|
configJson = builtins.toJSON clusterConfig;
|
|
|
|
in pkgs.writeTextFile {
|
|
name = "cluster-config-${hostname}.json";
|
|
text = configJson;
|
|
destination = "/cluster-config.json";
|
|
}
|