mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-12-08 10:26:35 +00:00
This commit updates multiple roles to ensure compatibility with Ansible 2.20. Several include paths and task-loading mechanisms required adjustments, as Ansible 2.20 applies stricter evaluation rules for complex Jinja expressions and no longer resolves certain relative include paths the way Ansible 2.18 did. Key changes: - Replaced legacy once_finalize.yml and once_flag.yml with the new structure under tasks/utils/once/finalize.yml and tasks/utils/once/flag.yml. - Updated all include_tasks statements to use 'path_join' with playbook_dir, ensuring deterministic and absolute file resolution across roles. - Fixed all network helper includes by converting direct relative paths such as 'roles/docker-compose/tasks/utils/network.yml' to proper Jinja-evaluated paths. - Normalized MATOMO_* variable names for consistency with the updated variable scope behavior in Ansible 2.20. - Removed deprecated patterns that were implicitly supported in Ansible 2.18 but break under the more strict variable and path resolution model in 2.20. These changes are part of the full migration step required to ensure the infinito-nexus roles remain stable, deterministic, and forward-compatible with Ansible 2.20. Details of the discussion and reasoning can be found in this conversation: https://chatgpt.com/share/69300a8d-24d4-800f-bec0-e895a695618a
Cleanup Docker Resources
Description
This role performs a complete cleanup of Docker resources by invoking a systemd-managed script. It removes unused Docker images, stopped containers, networks, build cache, and anonymous volumes. The cleanup is fully automated and can run on a schedule or be triggered manually.
Overview
Optimized for maintaining a clean and efficient Docker environment, this role:
-
Loads and triggers the anonymous volume cleanup role.
-
Installs a systemd service and timer for Docker pruning.
-
Deploys a cleanup script that invokes:
- The anonymous volume cleanup service.
docker system prune -a -fto remove unused Docker resources.
-
Allows forced execution during maintenance runs (
MODE_CLEANUP).
Purpose
The primary purpose of this role is to prevent storage bloat caused by unused Docker images, volumes, and build artifacts. Regular pruning ensures:
- Reduced disk usage
- Improved system performance
- Faster CI/CD and container deployments
- More predictable Docker engine behavior
Features
- Anonymous Volume Cleanup: Integrates with
sys-ctl-cln-anon-volumesto remove stale volumes. - Full Docker Prune: Executes
docker system prune -a -fto reclaim space. - Systemd Integration: Registers a systemd unit and timer for automated cleanup.
- Scheduled Execution: Runs daily (or as configured) based on
SYS_SCHEDULE_CLEANUP_DOCKER. - Force Execution Mode: When
MODE_CLEANUP=true, cleanup is executed immediately. - Safe Execution: Includes validation for missing services and Docker availability.
Script Behavior
The cleanup script:
- Checks whether the anonymous volume cleanup service is defined and available.
- Starts the service if present.
- Runs
docker system prune -a -fif Docker is installed. - Stops execution immediately on errors (
set -ebehavior).