replace watchtower with custom script

This commit is contained in:
ahuston-0 2024-11-17 22:15:39 -05:00
parent 7c6dfdad80
commit 8598ddc1bf
No known key found for this signature in database
GPG Key ID: 47940175096C1330
2 changed files with 43 additions and 12 deletions

View File

@ -128,18 +128,25 @@ let
at_path = vars.primary_archiveteam;
in
{
virtualisation.oci-containers.containers =
(createTemplatedContainers containers container-spec)
// {
archiveteam-watchtower = {
image = "containrrr/watchtower:latest";
labels = {
"com.centurylinklabs.watchtower.enable" = "true";
"com.centurylinklabs.watchtower.scope" = "archiveteam";
};
volumes = [ "/var/run/docker.sock:/var/run/docker.sock" ];
log-driver = "local";
cmd = lib.splitString " " "--label-enable --cleanup --interval 600";
virtualisation.oci-containers.containers = createTemplatedContainers containers container-spec;
systemd = {
timers."custom-watchtower@archiveteam" = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "20m";
OnUnitActiveSec = "5m";
Unit = "custom-watchtower@archiveteam.service";
};
};
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'";
};
};
};
}

View 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