From 2da1bd043374a8f62239387317fae388a6c62800 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone <exarkun@twistedmatrix.com> Date: Tue, 22 Jun 2021 15:23:32 -0400 Subject: [PATCH] Turn morph/lib into a namespace in its own right Put its contents in it and then use them from there instead of importing them all over the rest of the code. --- morph/grid/local/grid.nix | 16 ++++++++-------- morph/grid/production/grid.nix | 25 ++++++++++++------------- morph/grid/testing/grid.nix | 17 ++++++++--------- morph/lib/default.nix | 9 +++++++++ 4 files changed, 37 insertions(+), 30 deletions(-) create mode 100644 morph/lib/default.nix diff --git a/morph/grid/local/grid.nix b/morph/grid/local/grid.nix index fdc0cde5..dccb3813 100644 --- a/morph/grid/local/grid.nix +++ b/morph/grid/local/grid.nix @@ -1,7 +1,7 @@ -# Load the helper function and call it with arguments tailored for the local -# grid. It will make the morph configuration for us. We share this function -# with the production grid and have one fewer possible point of divergence. -import ../../lib/make-grid.nix { +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: @@ -22,7 +22,7 @@ import ../../lib/make-grid.nix { nodeExporterTargets = [ "monitoring" "payments" "storage1" "storage2" ]; in { - "payments" = import ../../lib/make-issuer.nix (cfg // rec { + "payments" = lib.make-issuer (cfg // rec { publicIPv4 = "192.168.67.21"; monitoringvpnIPv4 = "172.23.23.11"; hardware = import ./virtual-hardware.nix ({ inherit publicIPv4; }); @@ -31,7 +31,7 @@ import ../../lib/make-grid.nix { inherit sshUsers; }); - "storage1" = import ../../lib/make-testing.nix (cfg // rec { + "storage1" = lib.make-testing (cfg // rec { publicIPv4 = "192.168.67.22"; monitoringvpnIPv4 = "172.23.23.12"; hardware = import ./virtual-hardware.nix ({ inherit publicIPv4; }); @@ -40,7 +40,7 @@ import ../../lib/make-grid.nix { inherit sshUsers; }); - "storage2" = import ../../lib/make-testing.nix (cfg // rec { + "storage2" = lib.make-testing (cfg // rec { publicIPv4 = "192.168.67.23"; monitoringvpnIPv4 = "172.23.23.13"; hardware = import ./virtual-hardware.nix ({ inherit publicIPv4; }); @@ -49,7 +49,7 @@ import ../../lib/make-grid.nix { inherit sshUsers; }); - "monitoring" = import ../../lib/make-monitoring.nix (cfg // rec { + "monitoring" = lib.make-monitoring (cfg // rec { publicIPv4 = "192.168.67.24"; monitoringvpnIPv4 = "172.23.23.1"; inherit vpnClientIPs; diff --git a/morph/grid/production/grid.nix b/morph/grid/production/grid.nix index fee0c9be..aea3a9df 100644 --- a/morph/grid/production/grid.nix +++ b/morph/grid/production/grid.nix @@ -1,7 +1,6 @@ -# Load the helper function and call it with arguments tailored for the testing -# grid. It will make the morph configuration for us. We share this function -# with the testing grid and have one fewer possible point of divergence. -import ../../lib/make-grid.nix { +# See morph/grid/local/grid.nix for additional commentary. +let lib = import ../../lib; +in lib.make-grid { name = "Production"; config = ./config.json; nodes = cfg: @@ -52,16 +51,16 @@ import ../../lib/make-grid.nix { # doesn't specify one. # # The names must be unique! - "payments.privatestorage.io" = import ../../lib/make-issuer.nix (cfg // { + "payments.privatestorage.io" = lib.make-issuer (cfg // { publicIPv4 = "18.184.142.208"; monitoringvpnIPv4 = "172.23.23.11"; inherit monitoringvpnKeyDir; inherit sshUsers; - hardware = ../../lib/issuer-aws.nix; + hardware = lib.hardware-aws; stateVersion = "19.03"; }); - "storage001" = import ../../lib/make-storage.nix (cfg // { + "storage001" = lib.make-storage (cfg // { cfg = import ./storage001-config.nix; inherit sshUsers; hardware = ./storage001-hardware.nix; @@ -69,7 +68,7 @@ import ../../lib/make-grid.nix { monitoringvpnIPv4 = "172.23.23.21"; inherit monitoringvpnKeyDir; }); - "storage002" = import ../../lib/make-storage.nix (cfg // { + "storage002" = lib.make-storage (cfg // { cfg = import ./storage002-config.nix; inherit sshUsers; hardware = ./storage002-hardware.nix; @@ -77,7 +76,7 @@ import ../../lib/make-grid.nix { monitoringvpnIPv4 = "172.23.23.22"; inherit monitoringvpnKeyDir; }); - "storage003" = import ../../lib/make-storage.nix (cfg // { + "storage003" = lib.make-storage (cfg // { cfg = import ./storage003-config.nix; inherit sshUsers; hardware = ./storage003-hardware.nix; @@ -85,7 +84,7 @@ import ../../lib/make-grid.nix { monitoringvpnIPv4 = "172.23.23.23"; inherit monitoringvpnKeyDir; }); - "storage004" = import ../../lib/make-storage.nix (cfg // { + "storage004" = lib.make-storage (cfg // { cfg = import ./storage004-config.nix; inherit sshUsers; hardware = ./storage004-hardware.nix; @@ -93,7 +92,7 @@ import ../../lib/make-grid.nix { monitoringvpnIPv4 = "172.23.23.24"; inherit monitoringvpnKeyDir; }); - "storage005" = import ../../lib/make-storage.nix (cfg // { + "storage005" = lib.make-storage (cfg // { cfg = import ./storage005-config.nix; inherit sshUsers; hardware = ./storage005-hardware.nix; @@ -102,14 +101,14 @@ import ../../lib/make-grid.nix { inherit monitoringvpnKeyDir; }); - "monitoring" = import ../../lib/make-monitoring.nix (cfg // { + "monitoring" = lib.make-monitoring (cfg // { publicIPv4 = "monitoring.private.storage"; monitoringvpnIPv4 = "172.23.23.1"; inherit monitoringvpnKeyDir; inherit vpnClientIPs; inherit hostsMap; inherit nodeExporterTargets; - hardware = ../../lib/issuer-aws.nix; + hardware = lib.hardware-aws; stateVersion = "19.09"; inherit sshUsers; }); diff --git a/morph/grid/testing/grid.nix b/morph/grid/testing/grid.nix index e31a28f2..73635932 100644 --- a/morph/grid/testing/grid.nix +++ b/morph/grid/testing/grid.nix @@ -1,7 +1,6 @@ -# Load the helper function and call it with arguments tailored for the testing -# grid. It will make the morph configuration for us. We share this function -# with the production grid and have one fewer possible point of divergence. -import ../../lib/make-grid.nix { +# See morph/grid/local/grid.nix for additional commentary. +let lib = import ../../lib; +in lib.make-grid { name = "Testing"; config = ./config.json; nodes = cfg: @@ -21,16 +20,16 @@ import ../../lib/make-grid.nix { nodeExporterTargets = [ "monitoring" "payments" "storage001" ]; in { - "payments" = import ../../lib/make-issuer.nix (cfg // { + "payments" = lib.make-issuer (cfg // { publicIPv4 = "18.194.183.13"; monitoringvpnIPv4 = "172.23.23.11"; inherit monitoringvpnKeyDir; inherit sshUsers; - hardware = ../../lib/issuer-aws.nix; + hardware = lib.hardware-aws; stateVersion = "19.03"; }); - "storage001" = import ../../lib/make-testing.nix (cfg // { + "storage001" = lib.make-testing (cfg // { publicIPv4 = "3.120.26.190"; monitoringvpnIPv4 = "172.23.23.12"; inherit monitoringvpnKeyDir; @@ -39,14 +38,14 @@ import ../../lib/make-grid.nix { stateVersion = "19.03"; }); - "monitoring" = import ../../lib/make-monitoring.nix (cfg // { + "monitoring" = lib.make-monitoring (cfg // { publicIPv4 = "18.156.171.217"; monitoringvpnIPv4 = "172.23.23.1"; inherit monitoringvpnKeyDir; inherit vpnClientIPs; inherit hostsMap; inherit nodeExporterTargets; - hardware = ../../lib/issuer-aws.nix; + hardware = lib.hardware-aws; stateVersion = "19.09"; inherit sshUsers; }); diff --git a/morph/lib/default.nix b/morph/lib/default.nix new file mode 100644 index 00000000..95a3ee14 --- /dev/null +++ b/morph/lib/default.nix @@ -0,0 +1,9 @@ +rec { + make-grid = import ./make-grid.nix; + make-issuer = import ./make-issuer.nix; + make-testing = import ./make-testing.nix; + make-storage = import ./make-storage.nix; + make-monitoring = import ./make-monitoring.nix; + + hardware-aws = import ./issuer-aws.nix; +} -- GitLab