summaryrefslogtreecommitdiffstats
path: root/krebs/3modules/sync-containers3.nix
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2024-04-24 23:46:01 +0200
committermakefu <github@syntax-fehler.de>2024-04-24 23:46:01 +0200
commitc5a11854c5061895c61d916959d5ff838a19a1bf (patch)
tree01fa25cf33ea9c08d7c220354e9579144c2be464 /krebs/3modules/sync-containers3.nix
parent033ebfc37221cfcd2f338775147f822dc4bb2213 (diff)
parent593ae434b8a088f59340d6be595cd133b5b72908 (diff)
Merge remote-tracking branch 'lass/master'
Diffstat (limited to 'krebs/3modules/sync-containers3.nix')
-rw-r--r--krebs/3modules/sync-containers3.nix20
1 files changed, 15 insertions, 5 deletions
diff --git a/krebs/3modules/sync-containers3.nix b/krebs/3modules/sync-containers3.nix
index 7373592a5..12a5ee4e7 100644
--- a/krebs/3modules/sync-containers3.nix
+++ b/krebs/3modules/sync-containers3.nix
@@ -43,6 +43,14 @@ in {
fi
'';
};
+ hostname = lib.mkOption {
+ type = lib.types.str;
+ description = ''
+ hostname of the container,
+ his is continously checked by ping and the container is restarted if unreachable
+ '';
+ default = config.name;
+ };
};
}));
};
@@ -68,6 +76,8 @@ in {
serviceConfig.ExecStart = pkgs.writers.writeDash "autoswitch" ctr.startCommand;
unitConfig.X-StopOnRemoval = false;
};
+ # get rid of stateVersion not set warning;
+ system.stateVersion = config.system.nixos.release;
};
autoStart = false;
enableTun = true;
@@ -110,8 +120,8 @@ in {
set -efux
consul lock sync_${ctr.name} ${pkgs.writers.writeDash "${ctr.name}-sync" ''
set -efux
- if ping -c 1 ${ctr.name}.r; then
- nice --adjustment=30 rsync -a -e "ssh -i $CREDENTIALS_DIRECTORY/ssh_key" --timeout=30 --inplace --sparse container_sync@${ctr.name}.r:disk "$HOME"/disk.rsync
+ if ping -c 1 ${ctr.hostname}; then
+ nice --adjustment=30 rsync -a -e "ssh -i $CREDENTIALS_DIRECTORY/ssh_key" --timeout=30 --inplace --sparse container_sync@${ctr.hostname}:disk "$HOME"/disk.rsync
touch "$HOME"/incomplete
nice --adjustment=30 rsync --inplace "$HOME"/disk.rsync "$HOME"/disk
rm -f "$HOME"/incomplete
@@ -153,7 +163,7 @@ in {
export payload
if [ "$(jq -rn 'env.payload | fromjson.host')" = '${config.networking.hostName}' ]; then
# echo 'we are the host, trying to reach container'
- if $(retry -t 10 -d 10 -- ping -q -c 1 ${ctr.name}.r > /dev/null); then
+ if $(retry -t 10 -d 10 -- ping -q -c 1 ${ctr.hostname} > /dev/null); then
# echo 'container is reachable, continueing'
continue
else
@@ -237,8 +247,8 @@ in {
/run/current-system/sw/bin/nixos-container start ${ctr.name}
# wait for system to become reachable for the first time
systemctl start ${ctr.name}_watcher.service
- retry -t 10 -d 10 -- ping -q -c 1 ${ctr.name}.r > /dev/null
- while systemctl is-active container@${ctr.name}.service >/devnull && ping -q -c 3 ${ctr.name}.r >/dev/null; do
+ retry -t 10 -d 10 -- ping -q -c 1 ${ctr.hostname} > /dev/null
+ while systemctl is-active container@${ctr.name}.service >/devnull && ping -q -c 3 ${ctr.hostname} >/dev/null; do
consul kv put containers/${ctr.name} "$(jq -cn '{host: "${config.networking.hostName}", time: now}')" >/dev/null
sleep 10
done