mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-09-11 21:07:16 +02:00
feat(sys-ctl-cln-faild-bkps): migrate role to cleanback CLI (systemd oneshot) and derive workers from Ansible facts
- install via pkgmgr (CLEANUP_FAILED_BACKUPS_PKG=cleanback) - run: cleanback --all --dirval-cmd dirval --workers {{ CLEANUP_FAILED_BACKUPS_WORKERS }} --timeout {{ CLEANBACK_TIMEOUT_SECONDS }} --yes - remove obsolete systemctl template and path set_fact logic - keep task variable names intact; no defaults for runtime knobs - update README to reflect new behavior Conversation: https://chatgpt.com/share/68c309bf-8818-800f-84d9-c4aa74a4544c
This commit is contained in:
@@ -1,24 +1,13 @@
|
|||||||
# Docker Volume Backup Cleanup Role
|
# Cleanup Failed Backups
|
||||||
|
|
||||||
## Description
|
This role installs and runs the **cleanback** CLI to validate and delete **failed Docker backups** under `/Backups/*/backup-docker-to-local`.
|
||||||
|
Validation is performed via `dirval`; failures can be removed automatically in a non-interactive service execution.
|
||||||
|
|
||||||
This role cleans up failed Docker backups by pulling a [Git repository](https://github.com/kevinveenbirkenbach/cleanup-failed-docker-backups) that contains cleanup scripts and configuring a systemd service to execute them. It ensures that failed or incomplete backups are removed to free up disk space and maintain a healthy backup environment.
|
## Behavior
|
||||||
|
- Installs `cleanback` via `pkgmgr`.
|
||||||
## Overview
|
- Runs `cleanback` (`main.py`) as a **systemd oneshot** service.
|
||||||
|
- Executes `--all` with `--yes` so failing directories are deleted automatically.
|
||||||
Optimized for backup maintenance, this role:
|
- **No defaults** for runtime knobs:
|
||||||
- Clones the sys-ctl-cln-faild-bkps repository.
|
- `CLEANBACK_TIMEOUT_SECONDS` (required)
|
||||||
- Configures a systemd service to run the cleanup script.
|
- `SYS_SCHEDULE_CLEANUP_FAILED_BACKUPS` (required)
|
||||||
- Integrates with the [sys-timer](../sys-timer/README.md) role to schedule periodic cleanup.
|
- **Workers** (`CLEANUP_FAILED_BACKUPS_WORKERS`) are **derived from Ansible facts only** (no arbitrary defaults). Facts **must** be gathered.
|
||||||
- Works in conjunction with the sys-svc-directory-validator role for additional verification.
|
|
||||||
|
|
||||||
## Purpose
|
|
||||||
|
|
||||||
The primary purpose of this role is to remove failed Docker backups automatically, thereby freeing disk space and preventing backup storage from becoming cluttered with incomplete data.
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
- **Repository Cloning:** Retrieves the latest cleanup scripts from a Git repository.
|
|
||||||
- **Service Configuration:** Sets up a systemd service to run the cleanup tasks.
|
|
||||||
- **Timer Integration:** Schedules periodic cleanup through a systemd timer.
|
|
||||||
- **Dependency Integration:** Works with sys-svc-directory-validator to enhance backup integrity.
|
|
||||||
|
@@ -7,25 +7,18 @@
|
|||||||
- sys-svc-directory-validator
|
- sys-svc-directory-validator
|
||||||
- sys-daemon
|
- sys-daemon
|
||||||
|
|
||||||
- name: "pkgmgr install"
|
- name: "pkgmgr install '{{ CLN_FAILED_DOCKER_BACKUPS_PKG }}'"
|
||||||
include_role:
|
include_role:
|
||||||
name: pkgmgr-install
|
name: pkgmgr-install
|
||||||
vars:
|
vars:
|
||||||
package_name: "{{ CLN_FAILED_DOCKER_BACKUPS_PKG }}"
|
package_name: "{{ CLEANUP_FAILED_BACKUPS_PKG }}"
|
||||||
|
|
||||||
- name: "Retrieve {{ CLN_FAILED_DOCKER_BACKUPS_PKG }} path from pkgmgr"
|
|
||||||
command: "pkgmgr path {{ CLN_FAILED_DOCKER_BACKUPS_PKG }}"
|
|
||||||
register: pkgmgr_output
|
|
||||||
changed_when: false
|
|
||||||
|
|
||||||
- name: Set fact for BACKUP_CLEANUP_SCRIPT
|
|
||||||
set_fact:
|
|
||||||
BACKUP_CLEANUP_SCRIPT: "{{ pkgmgr_output.stdout.rstrip('/') ~ '/cleanup-all.sh' }}"
|
|
||||||
changed_when: false
|
|
||||||
|
|
||||||
- include_role:
|
- include_role:
|
||||||
name: sys-service
|
name: sys-service
|
||||||
vars:
|
vars:
|
||||||
system_service_timer_enabled: true
|
system_service_timer_enabled: true
|
||||||
system_service_on_calendar: "{{SYS_SCHEDULE_CLEANUP_FAILED_BACKUPS}}"
|
system_service_on_calendar: "{{ SYS_SCHEDULE_CLEANUP_FAILED_BACKUPS }}"
|
||||||
system_service_copy_files: false
|
system_service_copy_files: false
|
||||||
|
system_service_tpl_on_failure: "{{ SYS_SERVICE_ON_FAILURE_COMPOSE }}"
|
||||||
|
system_service_tpl_exec_start: '/bin/sh -c "{{ CLEANUP_FAILED_BACKUPS_PKG }} --all --dirval-cmd dirval --workers {{ CLEANUP_FAILED_BACKUPS_WORKERS }} --timeout {{ CLEANBACK_TIMEOUT_SECONDS }} --yes"'
|
||||||
|
system_service_tpl_exec_start_pre: '/usr/bin/python {{ PATH_SYSTEM_LOCK_SCRIPT }} {{ SYS_SERVICE_GROUP_MANIPULATION | join(" ") }} --ignore {{ SYS_SERVICE_GROUP_CLEANUP| join(" ") }} --timeout "{{ SYS_TIMEOUT_CLEANUP_SERVICES }}"'
|
||||||
|
@@ -1,8 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Cleaning up failed docker volume backups
|
|
||||||
OnFailure={{ SYS_SERVICE_ON_FAILURE_COMPOSE }}
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
ExecStartPre=/usr/bin/python {{ PATH_SYSTEM_LOCK_SCRIPT }} {{ SYS_SERVICE_GROUP_MANIPULATION | join(' ') }} --ignore {{ SYS_SERVICE_GROUP_CLEANUP| join(' ') }} --timeout "{{ SYS_TIMEOUT_CLEANUP_SERVICES }}"
|
|
||||||
ExecStart=/bin/sh -c '/usr/bin/yes | /usr/bin/bash {{ BACKUP_CLEANUP_SCRIPT | quote }}'
|
|
@@ -1,2 +1,4 @@
|
|||||||
system_service_id: sys-ctl-cln-faild-bkps
|
system_service_id: sys-ctl-cln-faild-bkps
|
||||||
CLN_FAILED_DOCKER_BACKUPS_PKG: cleanup-failed-docker-backups
|
|
||||||
|
CLEANUP_FAILED_BACKUPS_PKG: cleanback
|
||||||
|
CLEANUP_FAILED_BACKUPS_WORKERS: "{{ ansible_facts.processor_vcpus if ASYNC_ENABLED else 1 }}"
|
Reference in New Issue
Block a user