chore(ops): move archivist machine to ops and contrib
contrib/ gets the clickhouse patching, the bucket log parsing code and the awscli setup and shell. ops/ gets the machine config itself. Change-Id: If8b8f8cce5ca9c2b4d19e17be9a8b895ac35e84a Reviewed-on: https://cl.snix.dev/c/snix/+/30163 Autosubmit: Florian Klink <flokli@flokli.de> Tested-by: besadii Reviewed-by: Ryan Lahfa <masterancpp@gmail.com>
This commit is contained in:
parent
c3de9e21eb
commit
ae4d967288
14 changed files with 21 additions and 40 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
This directory contains various scripts and helpers used for nix-archivist tasks.
|
This directory contains various scripts and helpers used for nix-archivist tasks.
|
||||||
|
|
||||||
It's used from some of the archivist EC2 instance, as well as standalone.
|
It's used from the archivist EC2 instance, as well as standalone.
|
||||||
|
|
||||||
## AWS Profile setup
|
## AWS Profile setup
|
||||||
There's 2 AWS Accounts, reachable via the nixos.awsapps.com SSO portal.
|
There's 2 AWS Accounts, reachable via the nixos.awsapps.com SSO portal.
|
||||||
|
|
@ -14,7 +14,7 @@ This is assuming the `archeologist` AWS role in the main NixOS account.
|
||||||
This is a separate AWS Account, only for the archivist project. We can assume
|
This is a separate AWS Account, only for the archivist project. We can assume
|
||||||
`AWSAdministratorAccess` in there.
|
`AWSAdministratorAccess` in there.
|
||||||
|
|
||||||
## Machine
|
## archivist-ec2 Machine
|
||||||
The `archivist-ec2` machine currently is deployed in the main NixOS account.
|
The `archivist-ec2` machine currently is deployed in the main NixOS account.
|
||||||
|
|
||||||
It regularly processes S3 bucket logs and dumps them in parquet format into
|
It regularly processes S3 bucket logs and dumps them in parquet format into
|
||||||
|
|
@ -35,7 +35,6 @@ depot.nix.readTree.drvTargets {
|
||||||
--prefix PATH : ${pkgs.lib.makeBinPath [ clickhouseLocalFixedAWS ]}
|
--prefix PATH : ${pkgs.lib.makeBinPath [ clickhouseLocalFixedAWS ]}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
||||||
# A shell, by default pointing us to the archivist SSO profile / account by default.
|
# A shell, by default pointing us to the archivist SSO profile / account by default.
|
||||||
shell = pkgs.mkShell {
|
shell = pkgs.mkShell {
|
||||||
name = "archivist-shell";
|
name = "archivist-shell";
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
{ depot, ... }:
|
{ depot, ... }:
|
||||||
|
|
||||||
(with depot.ops.machines; [
|
(with depot.ops.machines; [
|
||||||
|
# Archivist EC2 machine
|
||||||
|
archivist-ec2
|
||||||
# Gerrit instance
|
# Gerrit instance
|
||||||
gerrit01
|
gerrit01
|
||||||
# Public-facing services
|
# Public-facing services
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
{ depot, pkgs, modulesPath, ... }:
|
{ depot, pkgs, ... }: # readTree options
|
||||||
|
{ modulesPath, ... }: # passed by module system
|
||||||
|
|
||||||
|
let
|
||||||
|
mod = name: depot.path.origSrc + ("/ops/modules/" + name);
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
"${modulesPath}/virtualisation/amazon-image.nix"
|
"${modulesPath}/virtualisation/amazon-image.nix"
|
||||||
../profiles/archivist.nix
|
(mod "archivist.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.hostPlatform = "x86_64-linux";
|
nixpkgs.hostPlatform = "x86_64-linux";
|
||||||
|
|
@ -14,7 +18,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.parse-bucket-logs = {
|
systemd.services.parse-bucket-logs = {
|
||||||
path = [ depot.users.flokli.archivist.parse-bucket-logs ];
|
path = [ depot.contrib.archivist.parse-bucket-logs ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = (pkgs.writers.writePython3 "parse-bucket-logs-continuously"
|
ExecStart = (pkgs.writers.writePython3 "parse-bucket-logs-continuously"
|
||||||
|
|
@ -27,7 +31,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
depot.users.flokli.archivist.parse-bucket-logs
|
depot.contrib.archivist.parse-bucket-logs
|
||||||
];
|
];
|
||||||
|
|
||||||
networking.hostName = "archivist-ec2";
|
networking.hostName = "archivist-ec2";
|
||||||
|
|
@ -58,10 +58,18 @@ in rec {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Systems that should be built in CI
|
# Systems that should be built in CI
|
||||||
|
archivistEC2System = nixosFor depot.ops.machines.archivist-ec2;
|
||||||
gerrit01System = nixosFor depot.ops.machines.gerrit01;
|
gerrit01System = nixosFor depot.ops.machines.gerrit01;
|
||||||
public01System = nixosFor depot.ops.machines.public01;
|
public01System = nixosFor depot.ops.machines.public01;
|
||||||
build01System = nixosFor depot.ops.machines.build01;
|
build01System = nixosFor depot.ops.machines.build01;
|
||||||
meta01System = nixosFor depot.ops.machines.meta01;
|
meta01System = nixosFor depot.ops.machines.meta01;
|
||||||
nixosSnixCache = nixosFor depot.ops.machines.snix-cache;
|
nixosSnixCache = nixosFor depot.ops.machines.snix-cache;
|
||||||
meta.ci.targets = [ "gerrit01System" "public01System" "build01System" "meta01System" ];
|
|
||||||
|
meta.ci.targets = [
|
||||||
|
"archivistEC2System"
|
||||||
|
"gerrit01System"
|
||||||
|
"public01System"
|
||||||
|
"build01System"
|
||||||
|
"meta01System"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
set noparent
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
{ depot, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
# assumes `name` is configured appropriately in your .ssh/config
|
|
||||||
deployScript = name: sys: pkgs.writeShellScriptBin "deploy-${name}" ''
|
|
||||||
set -eo pipefail
|
|
||||||
nix-copy-closure --to ${name} --gzip --use-substitutes ${sys}
|
|
||||||
ssh ${name} nix-env --profile /nix/var/nix/profiles/system --set ${sys}
|
|
||||||
ssh ${name} ${sys}/bin/switch-to-configuration switch
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
|
||||||
depot.nix.readTree.drvTargets rec {
|
|
||||||
archivistEc2System = (depot.ops.nixos.nixosFor ({ ... }: {
|
|
||||||
imports = [
|
|
||||||
./archivist-ec2/configuration.nix
|
|
||||||
];
|
|
||||||
})).config.system.build.toplevel;
|
|
||||||
|
|
||||||
deploy-archivist-ec2 = (deployScript "archivist-ec2" archivistEc2System);
|
|
||||||
|
|
||||||
deps = (depot.nix.lazy-deps {
|
|
||||||
deploy-archivist-ec2.attr = "users.flokli.nixos.deploy-archivist-ec2";
|
|
||||||
aws.attr = "third_party.nixpkgs.awscli";
|
|
||||||
});
|
|
||||||
|
|
||||||
shell = pkgs.mkShell {
|
|
||||||
name = "flokli-nixos-shell";
|
|
||||||
packages = [ deps ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue