Skip to content
Snippets Groups Projects
Commit 13e843f0 authored by Jean-Paul Calderone's avatar Jean-Paul Calderone
Browse files

Split off the testing node into its own testing grid.

Define testing grid and production grid with a function they can share.
parent 0a5dea1d
No related branches found
No related tags found
1 merge request!2Testing and production grids
let
# Pin the deployment package-set to a specific version of nixpkgs. This is
# NixOS 19.03 as of Aug 28 2019. There's nothing special about it. It's
# just recent at the time of development. It can be upgraded when there is
# value in doing so. Meanwhile, our platform doesn't shift around beneath
# us in surprising ways as time passes.
pkgs = import (builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/3c83ad6ac13b67101cc3e2e07781963a010c1624.tar.gz";
sha256 = "0cdq342wrkvkyccygpp1gvwp7hhqg68hljjwld4vjixm901ayy14";
}) {};
# Load our JSON configuration for later use.
cfg = pkgs.lib.trivial.importJSON ./grid.config.json;
in
{
network = {
# Make all of the hosts in this network use the nixpkgs we pinned above.
inherit pkgs;
# This is just for human consumption as far as I can tell.
description = "PrivateStorage.io Staging Grid";
};
# Here are the hosts that are in this morph network. This is sort of like a
# server manifest. We try to keep as many of the specific details as
# 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 ./make-grid.nix {
name = "Production";
nodes = cfg: {
# Here are the hosts that are in this morph network. This is sort of like
# a server manifest. We try to keep as many of the specific details as
# possible out of *this* file so that this file only grows as server count
# grows. If it grows too much, we can load servers by listing contents of a
# directory or reading from another JSON file or some such. For now, I'm
# just manually maintaining these entries.
# grows. If it grows too much, we can load servers by listing contents of
# a directory or reading from another JSON file or some such. For now,
# I'm just manually maintaining these entries.
#
# The name on the left of the `=` is mostly irrelevant but it does provide a
# default hostname for the server if the configuration on the right side
# The name on the left of the `=` is mostly irrelevant but it does provide
# a default hostname for the server if the configuration on the right side
# doesn't specify one.
#
# The names must be unique!
"testing000" = import ./testing000.nix {
publicIPv4 = "3.123.26.90";
# Pass along some of the Tahoe-LAFS configuration. If we have much more
# configuration than this we may want to keep it bundled up in one value
# instead of pulling individual values out to pass along.
inherit (cfg) publicStoragePort;
};
"staging001" = import ./staging001.nix {
publicIPv4 = "209.95.51.251";
inherit (cfg) publicStoragePort;
......@@ -48,4 +24,5 @@ in
# Pass the whole grid configuration to the module and let it take what it
# wants.
"staging002" = import ./staging002.nix cfg;
};
}
# Define a function for making a morph configuration for a storage grid. It
# takes two arguments. A string like "Production" giving the name of the grid
# and a function that takes the grid configuration as an argument and returns
# a set of nodes specifying the addresses and NixOS configurations for each
# server in the morph network.
{ name, nodes }:
let
# Pin the deployment package-set to a specific version of nixpkgs. This is
# NixOS 19.03 as of Aug 28 2019. There's nothing special about it. It's
# just recent at the time of development. It can be upgraded when there is
# value in doing so. Meanwhile, our platform doesn't shift around beneath
# us in surprising ways as time passes.
pkgs = import (builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/3c83ad6ac13b67101cc3e2e07781963a010c1624.tar.gz";
sha256 = "0cdq342wrkvkyccygpp1gvwp7hhqg68hljjwld4vjixm901ayy14";
}) {};
# Load our JSON configuration for later use.
cfg = pkgs.lib.trivial.importJSON ./grid.config.json;
in
{
network = {
# Make all of the hosts in this network use the nixpkgs we pinned above.
inherit pkgs;
# This is just for human consumption as far as I can tell.
description = "PrivateStorage.io ${name} Grid";
};
} // (nodes cfg)
# 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 ./make-grid.nix {
name = "Testing";
nodes = cfg: {
"testing000" = import ./testing000.nix {
publicIPv4 = "3.123.26.90";
# Pass along some of the Tahoe-LAFS configuration. If we have much more
# configuration than this we may want to keep it bundled up in one value
# instead of pulling individual values out to pass along.
inherit (cfg) publicStoragePort;
};
};
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment