Allow creating local GC roots for manifests
This commit is contained in:
parent
b2ffb5d1bb
commit
e43d2a1475
3 changed files with 34 additions and 5 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
.direnv
|
.direnv
|
||||||
.pre-commit-config.yaml
|
.pre-commit-config.yaml
|
||||||
result
|
result
|
||||||
|
.manifests
|
||||||
|
|
|
@ -2,12 +2,31 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
CREATE_LOCAL_GCROOT=false
|
||||||
|
|
||||||
|
while [[ "$#" -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--help)
|
||||||
|
echo "Use --create-local-gcroot to create local GC root"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--create-local-gcroot)
|
||||||
|
CREATE_LOCAL_GCROOT=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $1"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
first_server="${SERVERS%% *}"
|
first_server="${SERVERS%% *}"
|
||||||
previous_manifest=$(
|
previous_manifest=$(
|
||||||
envsubst <<EOF | ssh -T "root@$first_server"
|
envsubst <<EOF | ssh -T "root@$first_server"
|
||||||
if [[ -f "$GCROOTDIR/$NAME.yml" ]]; then
|
if [[ -f "$GCROOTDIR/$NAME.yml" ]]; then
|
||||||
cat "$GCROOTDIR/$NAME.yml"
|
cat "$GCROOTDIR/$NAME.yml"
|
||||||
fi
|
fi
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,7 +47,6 @@ echo Uploading closure...
|
||||||
for server in $SERVERS; do
|
for server in $SERVERS; do
|
||||||
echo Uploading closure to "$server"...
|
echo Uploading closure to "$server"...
|
||||||
nix copy --to "ssh://root@$server.dmz" "$MANIFEST"
|
nix copy --to "ssh://root@$server.dmz" "$MANIFEST"
|
||||||
ssh "root@$server.dmz" "mkdir -p $GCROOTDIR && ln -sf $MANIFEST $GCROOTDIR/${NAME}.yml"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
echo Applying Kubernetes manifest...
|
echo Applying Kubernetes manifest...
|
||||||
|
@ -38,3 +56,13 @@ vals eval -fail-on-missing-key-in-map <"$MANIFEST" |
|
||||||
--prune \
|
--prune \
|
||||||
--applyset applyset-"$NAME" \
|
--applyset applyset-"$NAME" \
|
||||||
--namespace "$NAMESPACE"
|
--namespace "$NAMESPACE"
|
||||||
|
|
||||||
|
echo Creating GC roots
|
||||||
|
for server in $SERVERS; do
|
||||||
|
ssh "root@$server.dmz" "mkdir -p $GCROOTDIR && ln -sf $MANIFEST $GCROOTDIR/${NAME}.yml"
|
||||||
|
done
|
||||||
|
|
||||||
|
if $CREATE_LOCAL_GCROOT; then
|
||||||
|
mkdir -p ./.manifests
|
||||||
|
ln -sf "$MANIFEST" "./.manifests/${NAME}.yml"
|
||||||
|
fi
|
||||||
|
|
|
@ -8,7 +8,7 @@ inputs @ {
|
||||||
flake-utils.lib.eachDefaultSystem
|
flake-utils.lib.eachDefaultSystem
|
||||||
(system: let
|
(system: let
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
lib = pkgs.lib;
|
inherit (pkgs) lib;
|
||||||
deployScript = (pkgs.writeScriptBin "applyset-deploy.sh" (builtins.readFile ./applyset-deploy.sh)).overrideAttrs (old: {
|
deployScript = (pkgs.writeScriptBin "applyset-deploy.sh" (builtins.readFile ./applyset-deploy.sh)).overrideAttrs (old: {
|
||||||
buildCommand = "${old.buildCommand}\npatchShebangs $out";
|
buildCommand = "${old.buildCommand}\npatchShebangs $out";
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue