replace watchtower with custom script
This commit is contained in:
parent
7c6dfdad80
commit
8598ddc1bf
@ -128,18 +128,25 @@ let
|
|||||||
at_path = vars.primary_archiveteam;
|
at_path = vars.primary_archiveteam;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
virtualisation.oci-containers.containers =
|
virtualisation.oci-containers.containers = createTemplatedContainers containers container-spec;
|
||||||
(createTemplatedContainers containers container-spec)
|
systemd = {
|
||||||
// {
|
timers."custom-watchtower@archiveteam" = {
|
||||||
archiveteam-watchtower = {
|
wantedBy = [ "timers.target" ];
|
||||||
image = "containrrr/watchtower:latest";
|
timerConfig = {
|
||||||
labels = {
|
OnBootSec = "20m";
|
||||||
"com.centurylinklabs.watchtower.enable" = "true";
|
OnUnitActiveSec = "5m";
|
||||||
"com.centurylinklabs.watchtower.scope" = "archiveteam";
|
Unit = "custom-watchtower@archiveteam.service";
|
||||||
};
|
|
||||||
volumes = [ "/var/run/docker.sock:/var/run/docker.sock" ];
|
|
||||||
log-driver = "local";
|
|
||||||
cmd = lib.splitString " " "--label-enable --cleanup --interval 600";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
services."custom-watchtower@archiveteam" = {
|
||||||
|
bindsTo = [ "docker.service" ];
|
||||||
|
after = [ "docker.service" ];
|
||||||
|
description = "runs a watchtower-esque script for systemd-based oci-containers";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "root";
|
||||||
|
ExecStart = "${config.nix.package}/bin/nix ${./watchtower.bash} 'com.centurylinklabs.watchtower.scope' 'archiveteam'";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
24
systems/palatine-hill/docker/watchtower.bash
Normal file
24
systems/palatine-hill/docker/watchtower.bash
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#! /usr/bin/env nix
|
||||||
|
#! nix shell nixpkgs#docker nixpkgs#bash --command bash
|
||||||
|
|
||||||
|
outdated_msg="Project code is out of date and needs to be upgraded. To remedy this problem immediately, you may reboot your warrior."
|
||||||
|
|
||||||
|
label="$1"
|
||||||
|
label_val="$2"
|
||||||
|
|
||||||
|
if (( $# != 2 )); then
|
||||||
|
echo "usage: $0 label label_value"
|
||||||
|
fi
|
||||||
|
|
||||||
|
containers=$(docker ps --format '{{.Names}}' -f "label=${label}=${label_val}")
|
||||||
|
|
||||||
|
for container in ${containers[@]}; do
|
||||||
|
echo "checking ${container}"
|
||||||
|
|
||||||
|
last_msg=$(docker logs -n 1 "${container}")
|
||||||
|
|
||||||
|
if [[ $last_msg =~ $outdated_msg ]]; then
|
||||||
|
echo "${container} is outdated, restarting"
|
||||||
|
systemctl restart "docker-${container}"
|
||||||
|
fi
|
||||||
|
done
|
Loading…
x
Reference in New Issue
Block a user