From 11720696b38886d92ff00b33fc99842f8b438585 Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone <exarkun@twistedmatrix.com> Date: Thu, 24 Jun 2021 09:24:45 -0400 Subject: [PATCH] Prefer the FQDN as the deployment target for all node types --- morph/grid/local/grid.nix | 4 ++-- morph/grid/production/grid.nix | 17 ++++++++++------- morph/grid/testing/grid.nix | 10 ++++++---- morph/lib/customize-issuer.nix | 14 +++++++++++++- morph/lib/customize-monitoring.nix | 11 ++++++++--- morph/lib/customize-storage.nix | 6 +++++- 6 files changed, 44 insertions(+), 18 deletions(-) diff --git a/morph/grid/local/grid.nix b/morph/grid/local/grid.nix index c7897997..0e10a533 100644 --- a/morph/grid/local/grid.nix +++ b/morph/grid/local/grid.nix @@ -47,8 +47,8 @@ let gridlib.monitoring (import ./virtual-hardware.nix ({ inherit publicIPv4; })) (gridlib.customize-monitoring { - inherit hostsMap publicIPv4 vpnClientIPs nodeExporterTargets; - inherit (config) monitoringvpnKeyDir; + inherit hostsMap vpnClientIPs nodeExporterTargets; + inherit (config) domain monitoringvpnKeyDir; monitoringvpnIPv4 = "172.23.23.1"; stateVersion = "19.09"; }) diff --git a/morph/grid/production/grid.nix b/morph/grid/production/grid.nix index 7a8e29bb..ae51174b 100644 --- a/morph/grid/production/grid.nix +++ b/morph/grid/production/grid.nix @@ -21,25 +21,29 @@ let ]; }; - monitoring = let publicIPv4 = "monitoring.private.storage"; in { + monitoring = { imports = [ gridlib.monitoring gridlib.hardware-aws (gridlib.customize-monitoring { - inherit hostsMap publicIPv4 vpnClientIPs nodeExporterTargets; - inherit (config) monitoringvpnKeyDir; + inherit hostsMap vpnClientIPs nodeExporterTargets; + inherit (config) domain monitoringvpnKeyDir; monitoringvpnIPv4 = "172.23.23.1"; stateVersion = "19.09"; }) ]; }; - defineStorageNode = name: { vpnIP, stateVersion }: let nodecfg = import "${./.}/${name}-config.nix"; in { + defineStorageNode = name: { vpnIP, stateVersion }: + let + nodecfg = import "${./.}/${name}-config.nix"; + hardware ="${./.}/${name}-hardware.nix"; + in { imports = [ # Get some of the very lowest-level system configuration for this # node. This isn't all *completely* hardware related. Maybe some # more factoring is in order, someday. - "${./.}/${name}-hardware.nix" + hardware # Slightly awkwardly, enable some of our hardware / network / bootloader options. ../../../nixos/modules/100tb.nix @@ -102,7 +106,6 @@ in { network = { description = "PrivateStorage.io Production Grid"; }; - - "payments.privatestorage.io" = payments; + inherit payments; inherit monitoring; } // storageNodes diff --git a/morph/grid/testing/grid.nix b/morph/grid/testing/grid.nix index 67ba8303..c8f0e84a 100644 --- a/morph/grid/testing/grid.nix +++ b/morph/grid/testing/grid.nix @@ -32,13 +32,13 @@ let ]; }; - monitoring = let publicIPv4 = "18.156.171.217"; in { + monitoring = { imports = [ gridlib.monitoring gridlib.hardware-aws (gridlib.customize-monitoring { - inherit hostsMap publicIPv4 vpnClientIPs nodeExporterTargets; - inherit (config) monitoringvpnKeyDir; + inherit hostsMap vpnClientIPs nodeExporterTargets; + inherit (config) domain monitoringvpnKeyDir; monitoringvpnIPv4 = "172.23.23.1"; stateVersion = "19.09"; }) @@ -58,5 +58,7 @@ in { network = { description = "PrivateStorage.io Testing Grid"; }; - inherit payments monitoring storage001; + "payments.${config.domain}" = payments; + "monitoring.${config.domain}" = monitoring; + "storage001.${config.domain}" = storage001; } diff --git a/morph/lib/customize-issuer.nix b/morph/lib/customize-issuer.nix index 7c8356a2..2a8faa5f 100644 --- a/morph/lib/customize-issuer.nix +++ b/morph/lib/customize-issuer.nix @@ -3,12 +3,22 @@ , monitoringvpnKeyDir , monitoringvpnEndpoint , monitoringvpnIPv4 +, domain , sshUsers , letsEncryptAdminEmail , issuerDomains , allowedChargeOrigins , ... -}: { +}: +{ config, ... }: { + # The morph default deployment target the name of the node in the network + # attrset. We don't always want to give the node its proper public address + # there (because it depends on which domain is associated with the grid + # being configured and using variable names complicates a lot of things). + # Instead, just tell morph how to reach the node here - by using its fully + # qualified domain name. + deployment.targetHost = "${config.networking.hostName}.${config.networking.domain}"; + deployment.secrets = { "ristretto-signing-key".source = ristrettoSigningKeyPath; "stripe-secret-key".source = stripeSecretKeyPath; @@ -16,6 +26,8 @@ "monitoringvpn-preshared-key".source = "${monitoringvpnKeyDir}/preshared.key"; }; + networking.domain = domain; + services.private-storage.sshUsers = sshUsers; services.private-storage.monitoring.vpn.client = { enable = true; diff --git a/morph/lib/customize-monitoring.nix b/morph/lib/customize-monitoring.nix index c81a765f..208f5048 100644 --- a/morph/lib/customize-monitoring.nix +++ b/morph/lib/customize-monitoring.nix @@ -1,18 +1,23 @@ { hostsMap +, domain , monitoringvpnKeyDir -, publicIPv4 , monitoringvpnIPv4 , vpnClientIPs , nodeExporterTargets , nginxExporterTargets ? [] , stateVersion , ... -}: { - deployment.targetHost = publicIPv4; +}: +{ config, ... }: { + # See customize-issuer.nix for an explanatoin of targetHost value. + deployment.targetHost = "${config.networking.hostName}.${config.networking.domain}"; + deployment.secrets = { "monitoringvpn-private-key".source = "${monitoringvpnKeyDir}/server.key"; "monitoringvpn-preshared-key".source = "${monitoringvpnKeyDir}/preshared.key"; }; + + networking.domain = domain; networking.hosts = hostsMap; services.private-storage.monitoring.vpn.server = { diff --git a/morph/lib/customize-storage.nix b/morph/lib/customize-storage.nix index 6a5766a3..3a9c8f6b 100644 --- a/morph/lib/customize-storage.nix +++ b/morph/lib/customize-storage.nix @@ -8,7 +8,11 @@ , monitoringvpnIPv4 , stateVersion , ... -}: { +}: +{ config, ... }: { + # See customize-issuer.nix for an explanatoin of targetHost value. + deployment.targetHost = "${config.networking.hostName}.${config.networking.domain}"; + deployment.secrets = { "ristretto-signing-key".source = ristrettoSigningKeyPath; "monitoringvpn-secret-key".source = "${monitoringvpnKeyDir}/${monitoringvpnIPv4}.key"; -- GitLab