add remote deploy scripts
This commit is contained in:
parent
be6312b84f
commit
fef006fbf3
47
flake.lock
47
flake.lock
|
@ -30,7 +30,7 @@
|
|||
"decode-server": {
|
||||
"inputs": {
|
||||
"naersk": "naersk",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"utils": "utils_2"
|
||||
},
|
||||
"locked": {
|
||||
|
@ -93,10 +93,7 @@
|
|||
},
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"decode-server",
|
||||
"nixpkgs"
|
||||
]
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1651574473,
|
||||
|
@ -114,9 +111,7 @@
|
|||
},
|
||||
"naersk_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1651574473,
|
||||
|
@ -133,6 +128,20 @@
|
|||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1652483617,
|
||||
"narHash": "sha256-Jxyn3uXFr5LdZNNiippI/obtLXAVBM18uVfiKVP4j9Q=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ed014c27f4d0ca772fb57d3b8985b772b0503bbd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1651571855,
|
||||
"narHash": "sha256-KZie6c2J2DUPLjG2PkYSwGLvD6RygA3TxZSPQpctbNI=",
|
||||
|
@ -148,7 +157,21 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1652483617,
|
||||
"narHash": "sha256-Jxyn3uXFr5LdZNNiippI/obtLXAVBM18uVfiKVP4j9Q=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ed014c27f4d0ca772fb57d3b8985b772b0503bbd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1652442528,
|
||||
"narHash": "sha256-ctD9BdjN7e6cBipm8k9xt+vgwlRApkvuJLSNdaVrphE=",
|
||||
|
@ -164,7 +187,7 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1651571855,
|
||||
"narHash": "sha256-KZie6c2J2DUPLjG2PkYSwGLvD6RygA3TxZSPQpctbNI=",
|
||||
|
@ -182,7 +205,7 @@
|
|||
},
|
||||
"radio-conf": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"utils": "utils_4"
|
||||
},
|
||||
"locked": {
|
||||
|
@ -206,7 +229,7 @@
|
|||
"docs": "docs",
|
||||
"dvb-api": "dvb-api",
|
||||
"naersk": "naersk_2",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"radio-conf": "radio-conf",
|
||||
"stops": "stops",
|
||||
"windshield": "windshield"
|
||||
|
|
72
flake.nix
72
flake.nix
|
@ -4,7 +4,7 @@
|
|||
|
||||
naersk = {
|
||||
url = github:nix-community/naersk;
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
#inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
radio-conf = {
|
||||
|
@ -20,7 +20,7 @@
|
|||
|
||||
decode-server = {
|
||||
url = github:dump-dvb/decode-server;
|
||||
inputs.stops.follows = "stops";
|
||||
#inputs.stops.follows = "stops";
|
||||
};
|
||||
|
||||
dvb-api = {
|
||||
|
@ -50,17 +50,6 @@
|
|||
pkgs = nixpkgs.legacyPackages."x86_64-linux";
|
||||
lib = pkgs.lib;
|
||||
|
||||
# command which generates the update script for that specific machine
|
||||
installScript = (target: (pkgs.writeScript "deploy" ''
|
||||
#!${pkgs.runtimeShell} -ex
|
||||
nix copy --to ssh://root@10.13.37.${toString (target + 100)} ${self}
|
||||
ssh root@10.13.37.${toString (target + 100)} -- nixos-rebuild switch --flake ${self}#traffic-stop-box-${toString target}
|
||||
''));
|
||||
|
||||
# concatanes commands together
|
||||
deployBoxes = (systems: lib.strings.concatStringsSep " "
|
||||
(builtins.map (system: "${(installScript system)}") systems));
|
||||
|
||||
# function that generates a system with the given number
|
||||
generate_system = (number:
|
||||
{
|
||||
|
@ -88,27 +77,62 @@
|
|||
numberOfSystems = 10;
|
||||
# list of accending system numbers
|
||||
#id_list = ((num: if num <= 0 then [ num ] else [ num ] ++ (id_list (num - 1))) (numberOfSystems - 1));
|
||||
id_list = [ 0 1 2 ];
|
||||
id_list = [ 0 1 2 3 4 ];
|
||||
# list of nixos systems
|
||||
list_of_systems = builtins.map generate_system id_list;
|
||||
# attribute set of all traffic stop boxes
|
||||
stop_boxes = nixpkgs.lib.foldr (x: y: nixpkgs.lib.mergeAttrs x y) { } list_of_systems;
|
||||
|
||||
deployScript = (pkgs.writeScript "deploy-all" (
|
||||
boxes = id_list;
|
||||
installScript = (target: (pkgs.writeScriptBin "deploy" ''
|
||||
#!${pkgs.runtimeShell}
|
||||
ssh root@10.13.37.${toString (target + 100)} "ps cax | grep \"nixos-rebuild\" > /dev/null"
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo "Process is running."
|
||||
exit
|
||||
else
|
||||
echo "Process is not running."
|
||||
nix copy --to ssh://root@10.13.37.${toString (target + 100)} ${self}
|
||||
ssh root@10.13.37.${toString (target + 100)} -- nixos-rebuild switch --flake ${self}#traffic-stop-box-${toString target} --option substituters "https://dump-dvb.cachix.org" --option substituters "https://cache.nixos.org"
|
||||
fi
|
||||
''));
|
||||
|
||||
# concatanes commands together
|
||||
deployBoxes = (systems: lib.strings.concatStringsSep " "
|
||||
(builtins.map (system: "${(installScript system)}/bin/deploy") systems));
|
||||
|
||||
deployAllScript = (pkgs.writeScriptBin "deploy-all" (
|
||||
''
|
||||
#!${pkgs.runtimeShell} -ex
|
||||
${pkgs.parallel}/bin/parallel --citation
|
||||
${pkgs.parallel}/bin/parallel -j10 ::: ${deployBoxes id_list} || echo "Some deployment failed"
|
||||
''
|
||||
#!${pkgs.runtimeShell} -ex
|
||||
${pkgs.parallel}/bin/parallel --citation
|
||||
${pkgs.parallel}/bin/parallel -j10 ::: ${deployBoxes boxes} || echo "Some deployment failed"
|
||||
''
|
||||
));
|
||||
|
||||
individualScripts = lib.foldl (x: y: lib.mergeAttrs x y) {} (builtins.map (number: {"deploy-box-${toString number}" = (installScript number);}) boxes);
|
||||
|
||||
|
||||
#deployScripts = pkgs.callPackage ./pkgs/deployment.nix {
|
||||
# boxes = id_list;
|
||||
# self = self;
|
||||
#};
|
||||
|
||||
packages = ({
|
||||
traffic-stop-box = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
|
||||
data-hoarder = self.nixosConfigurations.data-hoarder.config.system.build.vm;
|
||||
mobile-box-vm = self.nixosConfigurations.mobile-box.config.system.build.vm;
|
||||
mobile-box-iso = self.nixosConfigurations.mobile-box.config.system.build.isoImage;
|
||||
} // {
|
||||
deploy-all = deployAllScript;
|
||||
} // individualScripts);
|
||||
# deployScripts);
|
||||
#"x86_64-linux" = ({
|
||||
#} // deployScripts );});
|
||||
in
|
||||
{
|
||||
defaultPackage."x86_64-linux" = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
|
||||
packages."x86_64-linux".traffic-stop-box = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
|
||||
packages."x86_64-linux".data-hoarder = self.nixosConfigurations.data-hoarder.config.system.build.vm;
|
||||
packages."x86_64-linux".mobile-box-vm = self.nixosConfigurations.mobile-box.config.system.build.vm;
|
||||
packages."x86_64-linux".mobile-box-iso = self.nixosConfigurations.mobile-box.config.system.build.isoImage;
|
||||
packages."x86_64-linux".deploy-all = deployScript;
|
||||
packages."x86_64-linux" = packages;
|
||||
|
||||
nixosConfigurations = stop_boxes // {
|
||||
"mobile-box" = nixpkgs.lib.nixosSystem {
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
{self, pkgs, lib, boxes}:
|
||||
let
|
||||
# command which generates the update script for that specific machine
|
||||
installScript = (target: (pkgs.writeScript "deploy" ''
|
||||
#!${pkgs.runtimeShell}
|
||||
ssh root@10.13.37.${toString (target + 100)} "ps cax | grep \"nixos-rebuild\" > /dev/null"
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo "Process is running."
|
||||
exit
|
||||
else
|
||||
echo "Process is not running."
|
||||
nix copy --to ssh://root@10.13.37.${toString (target + 100)} ${self}
|
||||
ssh root@10.13.37.${toString (target + 100)} -- nixos-rebuild switch --flake ${self}#traffic-stop-box-${toString target}
|
||||
fi
|
||||
''));
|
||||
|
||||
# concatanes commands together
|
||||
deployBoxes = (systems: lib.strings.concatStringsSep " "
|
||||
(builtins.map (system: "${(installScript system)}") systems));
|
||||
|
||||
deployAllScript = (pkgs.writeScript "deploy-all" (
|
||||
''
|
||||
#!${pkgs.runtimeShell} -ex
|
||||
${pkgs.parallel}/bin/parallel --citation
|
||||
${pkgs.parallel}/bin/parallel -j10 ::: ${deployBoxes boxes} || echo "Some deployment failed"
|
||||
''
|
||||
));
|
||||
|
||||
individualScripts = lib.foldl (x: y: lib.mergeAttrs x y) {} (builtins.map (number: {"deploy-box-${toString number}" = (installScript number);}) boxes);
|
||||
|
||||
in ({
|
||||
deploy-all = deployAllScript;
|
||||
}) #individualScripts
|
||||
|
||||
#in (individualScripts // {
|
||||
# deploy-all = deployAllScript;
|
||||
#})
|
Loading…
Reference in New Issue