mirror of
				https://github.com/kevinveenbirkenbach/computer-playbook.git
				synced 2025-11-03 19:58:14 +00: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