Refactor deployment (#8)
* move deployment scripts * refactor deployment
This commit is contained in:
parent
6fb9686b7a
commit
88ef87505c
37
flake.nix
37
flake.nix
|
@ -126,37 +126,9 @@
|
|||
|
||||
# list of accending system numbers
|
||||
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;
|
||||
|
||||
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} -L
|
||||
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 --will-cite -j10 ::: ${deployBoxes id_list} || echo "Some deployment failed"
|
||||
''
|
||||
));
|
||||
|
||||
individualScripts = lib.foldl (x: y: lib.mergeAttrs x y) { } (builtins.map (number: { "deploy-box-${toString number}" = (installScript number); }) id_list);
|
||||
stop_boxes = nixpkgs.lib.foldl (x: y: nixpkgs.lib.mergeAttrs x (generate_system y)) { } id_list;
|
||||
|
||||
packages = {
|
||||
traffic-stop-box = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
|
||||
|
@ -164,8 +136,7 @@
|
|||
mobile-box-vm = self.nixosConfigurations.mobile-box.config.system.build.vm;
|
||||
mobile-box-disk = self.nixosConfigurations.mobile-box.config.system.build.diskImage;
|
||||
staging-microvm = self.nixosConfigurations.staging-data-hoarder.config.microvm.declaredRunner;
|
||||
deploy-all = deployAllScript;
|
||||
} // individualScripts;
|
||||
} // (import ./pkgs/deployment.nix { inherit self pkgs; systems = stop_boxes; });
|
||||
in
|
||||
{
|
||||
defaultPackage."x86_64-linux" = self.nixosConfigurations.traffic-stop-box-0.config.system.build.vm;
|
||||
|
@ -224,5 +195,3 @@
|
|||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,39 +1,36 @@
|
|||
{ self, pkgs, lib, boxes }:
|
||||
{ self, pkgs, systems }:
|
||||
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));
|
||||
installScript = (system:
|
||||
let ip = "10.13.37.${toString (system.config.dvb-dump.systemNumber + 100)}";
|
||||
in (pkgs.writeScriptBin "deploy" ''
|
||||
#!${pkgs.runtimeShell}
|
||||
ssh root@${ip} "ps cax | grep \"nixos-rebuild\" > /dev/null"
|
||||
if [ $? -eq 0 ]
|
||||
then
|
||||
echo "\e[1;31m [!] nixos-rebuild is already running on ${ip}"
|
||||
exit 1
|
||||
else
|
||||
nix copy --to ssh://root@${ip} ${self}
|
||||
ssh root@${ip} -- nixos-rebuild switch --flake ${self} -L
|
||||
fi
|
||||
''));
|
||||
|
||||
deployAllScript = (pkgs.writeScript "deploy-all" (
|
||||
''
|
||||
#!${pkgs.runtimeShell} -ex
|
||||
${pkgs.parallel}/bin/parallel --citation
|
||||
${pkgs.parallel}/bin/parallel -j10 ::: ${deployBoxes boxes} || echo "Some deployment failed"
|
||||
''
|
||||
));
|
||||
installScripts = pkgs.lib.mapAttrs' (name: system:
|
||||
pkgs.lib.attrsets.nameValuePair ("deploy-" + name) (installScript system))
|
||||
systems;
|
||||
|
||||
individualScripts = lib.foldl (x: y: lib.mergeAttrs x y) { } (builtins.map (number: { "deploy-box-${toString number}" = (installScript number); }) boxes);
|
||||
deployAllExecutablePathsConcatted =
|
||||
pkgs.lib.strings.concatMapStringsSep " " (path: "${path}/bin/deploy")
|
||||
(builtins.attrValues installScripts);
|
||||
|
||||
in
|
||||
({
|
||||
deploy-all = deployAllScript;
|
||||
}) #individualScripts
|
||||
deployAllScript = (name:
|
||||
pkgs.writeScriptBin name (''
|
||||
#!${pkgs.runtimeShell} -ex
|
||||
${pkgs.parallel}/bin/parallel --will-cite -j10 ::: ${deployAllExecutablePathsConcatted} || echo "Some deployment failed"
|
||||
''));
|
||||
|
||||
#in (individualScripts // {
|
||||
# deploy-all = deployAllScript;
|
||||
#})
|
||||
in {
|
||||
deploy-all = deployAllScript "deploy-all";
|
||||
nuke-all = deployAllScript "nuke-all";
|
||||
} // installScripts
|
||||
|
|
Loading…
Reference in New Issue