diff --git a/morph/grid/local/grid.nix b/morph/grid/local/grid.nix index 6a077af3f43c93be8dcfc55a3996dbe08a36e896..644f7dd3e0e1dd91f7c1e7a82ba57e64699b3345 100644 --- a/morph/grid/local/grid.nix +++ b/morph/grid/local/grid.nix @@ -1,57 +1,58 @@ -let lib = import ../../lib; -in lib.make-grid { - # Make a morph configuration for this grid. We share this function - # with the other grids and have one fewer possible point of divergence. - name = "LocalDev"; - config = ./config.json; - nodes = cfg: - let - sshUsers = import ./secrets/users.nix; - - # Get absolute vpn key directory path, as a string: - monitoringvpnKeyDir = toString ./. + "/${cfg.monitoringvpnKeyDir}"; - - # TBD: derive these automatically: - hostsMap = { - "172.23.23.1" = [ "monitoring" "monitoring.monitoringvpn" ]; - "172.23.23.11" = [ "payments" "payments.monitoringvpn" ]; - "172.23.23.12" = [ "storage1" "storage1.monitoringvpn" ]; - "172.23.23.13" = [ "storage2" "storage2.monitoringvpn" ]; - }; - vpnClientIPs = [ "172.23.23.11" "172.23.23.12" "172.23.23.13" ]; - nodeExporterTargets = [ "monitoring" "payments" "storage1" "storage2" ]; - - in { - payments = { - imports = [ - lib.issuer - (import ./virtual-hardware.nix ({ publicIPv4 = "192.168.67.21"; })) - (lib.customize-issuer cfg sshUsers monitoringvpnKeyDir "172.23.23.11" "19.03") - ]; - }; - - storage1 = let publicIPv4 = "192.168.67.22"; in { - imports = [ - lib.storage - (import ./virtual-hardware.nix ({ inherit publicIPv4; })) - (lib.customize-storage cfg sshUsers publicIPv4 monitoringvpnKeyDir "172.23.23.12" "19.09") - ]; - }; - - storage2 = let publicIPv4 = "192.168.67.23"; in { - imports = [ - lib.storage - (import ./virtual-hardware.nix ({ inherit publicIPv4; })) - (lib.customize-storage cfg sshUsers publicIPv4 monitoringvpnKeyDir "172.23.23.13" "19.09") - ]; - }; - - monitoring = let publicIPv4 = "192.168.67.24"; in { - imports = [ - lib.monitoring - (import ./virtual-hardware.nix ({ inherit publicIPv4; })) - (lib.customize-monitoring hostsMap monitoringvpnKeyDir publicIPv4 "172.23.23.1" vpnClientIPs nodeExporterTargets [] "19.09") - ]; - }; +let + pkgs = import <nixpkgs> { }; + + lib = import ../../lib; + config = pkgs.lib.trivial.importJSON ./config.json; + sshUsers = import ./secrets/users.nix; + + # Get absolute vpn key directory path, as a string: + monitoringvpnKeyDir = toString ./. + "/${config.monitoringvpnKeyDir}"; + + payments = let publicIPv4 = "192.168.67.21"; in { + imports = [ + lib.issuer + (import ./virtual-hardware.nix ({ inherit publicIPv4; })) + (lib.customize-issuer config sshUsers monitoringvpnKeyDir "172.23.23.11" "19.03") + ]; + }; + + storage1 = let publicIPv4 = "192.168.67.22"; in { + imports = [ + lib.storage + (import ./virtual-hardware.nix ({ inherit publicIPv4; })) + (lib.customize-storage config sshUsers publicIPv4 monitoringvpnKeyDir "172.23.23.12" "19.09") + ]; + }; + + storage2 = let publicIPv4 = "192.168.67.23"; in { + imports = [ + lib.storage + (import ./virtual-hardware.nix ({ inherit publicIPv4; })) + (lib.customize-storage config sshUsers publicIPv4 monitoringvpnKeyDir "172.23.23.13" "19.09") + ]; + }; + + monitoring = let publicIPv4 = "192.168.67.24"; in { + imports = [ + lib.monitoring + (import ./virtual-hardware.nix ({ inherit publicIPv4; })) + (lib.customize-monitoring hostsMap monitoringvpnKeyDir publicIPv4 "172.23.23.1" vpnClientIPs nodeExporterTargets [] "19.09") + ]; + }; + + # TBD: derive these automatically: + hostsMap = { + "172.23.23.1" = [ "monitoring" "monitoring.monitoringvpn" ]; + "172.23.23.11" = [ "payments" "payments.monitoringvpn" ]; + "172.23.23.12" = [ "storage1" "storage1.monitoringvpn" ]; + "172.23.23.13" = [ "storage2" "storage2.monitoringvpn" ]; + }; + vpnClientIPs = [ "172.23.23.11" "172.23.23.12" "172.23.23.13" ]; + nodeExporterTargets = [ "monitoring" "payments" "storage1" "storage2" ]; + +in { + network = { + description = "PrivateStorage.io LocalDev Grid"; }; + inherit payments monitoring storage1 storage2; }