From d1cabdfa1e6cc3add67b75e505404d1cac79da2c Mon Sep 17 00:00:00 2001 From: Evangelos Foutras <evangelos@foutrelis.com> Date: Fri, 15 Apr 2022 22:06:43 +0300 Subject: [PATCH] rebuilderd_worker: start removing stale chroots On some build failures, or perhaps when rebooting the boxes while a build is ongoing, repro chroots can be left behind taking up space. Add a service with a daily timer to remove week old chroots. --- roles/rebuilderd_worker/files/clean-repro | 3 +++ roles/rebuilderd_worker/files/clean-repro.service | 10 ++++++++++ roles/rebuilderd_worker/files/clean-repro.timer | 10 ++++++++++ roles/rebuilderd_worker/handlers/main.yml | 5 +++++ roles/rebuilderd_worker/tasks/main.yml | 14 ++++++++++++++ 5 files changed, 42 insertions(+) create mode 100644 roles/rebuilderd_worker/files/clean-repro create mode 100644 roles/rebuilderd_worker/files/clean-repro.service create mode 100644 roles/rebuilderd_worker/files/clean-repro.timer create mode 100644 roles/rebuilderd_worker/handlers/main.yml diff --git a/roles/rebuilderd_worker/files/clean-repro b/roles/rebuilderd_worker/files/clean-repro new file mode 100644 index 000000000..f07b33769 --- /dev/null +++ b/roles/rebuilderd_worker/files/clean-repro @@ -0,0 +1,3 @@ +#!/bin/bash -e + +find /var/lib/repro -maxdepth 1 -name '*?_?*' -mtime +6 -exec rm -rf {} + diff --git a/roles/rebuilderd_worker/files/clean-repro.service b/roles/rebuilderd_worker/files/clean-repro.service new file mode 100644 index 000000000..dc89c54f6 --- /dev/null +++ b/roles/rebuilderd_worker/files/clean-repro.service @@ -0,0 +1,10 @@ +[Unit] +Description=Clean up stale repro chroots +ConditionPathExists=/var/lib/repro + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/clean-repro +Nice=19 +IOSchedulingClass=best-effort +IOSchedulingPriority=7 diff --git a/roles/rebuilderd_worker/files/clean-repro.timer b/roles/rebuilderd_worker/files/clean-repro.timer new file mode 100644 index 000000000..cfa6d2438 --- /dev/null +++ b/roles/rebuilderd_worker/files/clean-repro.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Daily repro cleanup + +[Timer] +OnCalendar=daily +RandomizedDelaySec=12h +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/roles/rebuilderd_worker/handlers/main.yml b/roles/rebuilderd_worker/handlers/main.yml new file mode 100644 index 000000000..039b26571 --- /dev/null +++ b/roles/rebuilderd_worker/handlers/main.yml @@ -0,0 +1,5 @@ +--- + +- name: daemon reload + systemd: + daemon-reload: true diff --git a/roles/rebuilderd_worker/tasks/main.yml b/roles/rebuilderd_worker/tasks/main.yml index 379629597..c838137a4 100644 --- a/roles/rebuilderd_worker/tasks/main.yml +++ b/roles/rebuilderd_worker/tasks/main.yml @@ -13,3 +13,17 @@ - name: enable and start rebuilderd-worker@{{ item }} systemd: name=rebuilderd-worker@{{ item }} enabled=yes state=started with_items: '{{ rebuilderd_workers }}' + +- name: install cleanup script + copy: src=clean-repro dest=/usr/local/bin/clean-repro owner=root group=root mode=0755 + +- name: install cleanup units + copy: src={{ item }} dest=/etc/systemd/system/{{ item }} owner=root group=root mode=0644 + loop: + - clean-repro.timer + - clean-repro.service + notify: + - daemon reload + +- name: start and enable cleanup timer + service: name=clean-repro.timer enabled=yes state=started -- GitLab