feat: implement maintenance and dev-tools roles and enhance maintenance script
This commit is contained in:
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure core workstation development tools are installed
|
||||||
|
community.general.pacman:
|
||||||
|
name:
|
||||||
|
- git
|
||||||
|
- base-devel
|
||||||
|
- ripgrep
|
||||||
|
- fd
|
||||||
|
- jq
|
||||||
|
- bat
|
||||||
|
- eza
|
||||||
|
- ansible
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Ensure legacy editor packages are removed
|
||||||
|
community.general.pacman:
|
||||||
|
name:
|
||||||
|
- code
|
||||||
|
- code-oss
|
||||||
|
- code-marketplace
|
||||||
|
state: absent
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
- name: Cleanup legacy VS Code remnants
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: absent
|
||||||
|
loop:
|
||||||
|
- "/home/mw/.vscode-oss"
|
||||||
|
- "/home/mw/.vscode"
|
||||||
|
- "/home/mw/.config/Code"
|
||||||
|
- "/home/mw/.config/Code - OSS"
|
||||||
|
|
||||||
|
- name: Cleanup legacy local AI tools
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: absent
|
||||||
|
loop:
|
||||||
|
- "/home/mw/.local/share/ollama"
|
||||||
|
- "/home/mw/.ollama"
|
||||||
|
|
||||||
|
- name: System maintenance tasks
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: "{{ item }}"
|
||||||
|
loop:
|
||||||
|
- "paccache -r"
|
||||||
|
- "journalctl --vacuum-time=7d"
|
||||||
|
register: maintenance_result
|
||||||
|
changed_when: "'deleted' in maintenance_result.stdout or 'Vacuuming' in maintenance_result.stdout"
|
||||||
|
failed_when: false
|
||||||
+41
-22
@@ -2,21 +2,23 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# saTway Maintenance Script
|
# saTway Maintenance Script
|
||||||
# Version: 1.0.0
|
# Version: 1.1.0
|
||||||
# Target: mw-pfeddersheim-workstation
|
# Target: mw-pfeddersheim-workstation
|
||||||
|
|
||||||
LOG_FILE="/var/log/satway/maintenance-$(date +%Y%m%d).log"
|
CHECK_MODE=false
|
||||||
|
if [[ "${1:-}" == "--check" ]]; then
|
||||||
|
CHECK_MODE=true
|
||||||
|
echo "Running in CHECK mode (non-destructive)..."
|
||||||
|
fi
|
||||||
|
|
||||||
# Ensure log directory exists (needs sudo for /var/log usually, or local if not sudo)
|
# Ensure log directory exists
|
||||||
# For now we'll log to stdout and optionally a local file if permitted.
|
|
||||||
# If /var/log/satway is not writeable, fallback to local log.
|
|
||||||
mkdir -p "$HOME/logs" 2>/dev/null || true
|
mkdir -p "$HOME/logs" 2>/dev/null || true
|
||||||
LOCAL_LOG="$HOME/logs/maintenance-$(date +%Y%m%d).log"
|
LOCAL_LOG="$HOME/logs/maintenance-$(date +%Y%m%d).log"
|
||||||
|
|
||||||
echo "--- Starting saTway Maintenance $(date) ---" | tee -a "$LOCAL_LOG"
|
echo "--- Starting saTway Maintenance $(date) ---" | tee -a "$LOCAL_LOG"
|
||||||
|
|
||||||
# 1. System Update Check
|
# 1. System Update Check
|
||||||
echo "[1/4] Checking for system updates..." | tee -a "$LOCAL_LOG"
|
echo "[1/6] Checking for system updates..." | tee -a "$LOCAL_LOG"
|
||||||
if command -v checkupdates &> /dev/null; then
|
if command -v checkupdates &> /dev/null; then
|
||||||
checkupdates | tee -a "$LOCAL_LOG"
|
checkupdates | tee -a "$LOCAL_LOG"
|
||||||
elif command -v pacman &> /dev/null; then
|
elif command -v pacman &> /dev/null; then
|
||||||
@@ -26,21 +28,32 @@ fi
|
|||||||
# 2. System Optimization (Journald & Packages)
|
# 2. System Optimization (Journald & Packages)
|
||||||
echo "[2/6] Optimizing system logs and package cache..." | tee -a "$LOCAL_LOG"
|
echo "[2/6] Optimizing system logs and package cache..." | tee -a "$LOCAL_LOG"
|
||||||
if command -v journalctl &> /dev/null; then
|
if command -v journalctl &> /dev/null; then
|
||||||
echo "Pruning systemd journal logs..." | tee -a "$LOCAL_LOG"
|
echo "Checking systemd journal logs..." | tee -a "$LOCAL_LOG"
|
||||||
sudo journalctl --vacuum-time=7d --vacuum-size=500M 2>&1 | tee -a "$LOCAL_LOG" || echo "Journald vacuum failed (requires sudo)" | tee -a "$LOCAL_LOG"
|
if [ "$CHECK_MODE" = true ]; then
|
||||||
|
journalctl --disk-usage | tee -a "$LOCAL_LOG"
|
||||||
|
else
|
||||||
|
sudo journalctl --vacuum-time=7d --vacuum-size=500M 2>&1 | tee -a "$LOCAL_LOG" || echo "Journald vacuum failed (requires sudo)" | tee -a "$LOCAL_LOG"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v paccache &> /dev/null; then
|
if command -v paccache &> /dev/null; then
|
||||||
echo "Cleaning Arch package cache (keeping last 2)..." | tee -a "$LOCAL_LOG"
|
echo "Checking Arch package cache..." | tee -a "$LOCAL_LOG"
|
||||||
sudo paccache -rk2 2>&1 | tee -a "$LOCAL_LOG" || echo "paccache failed (requires sudo)" | tee -a "$LOCAL_LOG"
|
if [ "$CHECK_MODE" = true ]; then
|
||||||
|
du -sh /var/cache/pacman/pkg/ | tee -a "$LOCAL_LOG"
|
||||||
|
else
|
||||||
|
sudo paccache -rk2 2>&1 | tee -a "$LOCAL_LOG" || echo "paccache failed (requires sudo)" | tee -a "$LOCAL_LOG"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v pacman &> /dev/null; then
|
if command -v pacman &> /dev/null; then
|
||||||
echo "Checking for orphaned packages..." | tee -a "$LOCAL_LOG"
|
echo "Checking for orphaned packages..." | tee -a "$LOCAL_LOG"
|
||||||
ORPHANS=$(pacman -Qtdq) || ORPHANS=""
|
ORPHANS=$(pacman -Qtdq) || ORPHANS=""
|
||||||
if [ -n "$ORPHANS" ]; then
|
if [ -n "$ORPHANS" ]; then
|
||||||
echo "Removing orphaned packages: $ORPHANS" | tee -a "$LOCAL_LOG"
|
echo "Orphaned packages found: $ORPHANS" | tee -a "$LOCAL_LOG"
|
||||||
sudo pacman -Rns --noconfirm $ORPHANS | tee -a "$LOCAL_LOG"
|
if [ "$CHECK_MODE" = false ]; then
|
||||||
|
echo "Removing orphaned packages..." | tee -a "$LOCAL_LOG"
|
||||||
|
sudo pacman -Rns --noconfirm $ORPHANS | tee -a "$LOCAL_LOG"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "No orphaned packages found." | tee -a "$LOCAL_LOG"
|
echo "No orphaned packages found." | tee -a "$LOCAL_LOG"
|
||||||
fi
|
fi
|
||||||
@@ -48,27 +61,33 @@ fi
|
|||||||
|
|
||||||
# 3. Docker Cleanup
|
# 3. Docker Cleanup
|
||||||
if command -v docker &> /dev/null; then
|
if command -v docker &> /dev/null; then
|
||||||
echo "[3/6] Cleaning up Docker resources..." | tee -a "$LOCAL_LOG"
|
echo "[3/6] Checking Docker resources..." | tee -a "$LOCAL_LOG"
|
||||||
echo "Pruning unused docker data..." | tee -a "$LOCAL_LOG"
|
if [ "$CHECK_MODE" = true ]; then
|
||||||
# Use prune safely for unused data
|
docker system df | tee -a "$LOCAL_LOG"
|
||||||
docker system prune -f 2>&1 | tee -a "$LOCAL_LOG"
|
else
|
||||||
echo "Pruning unused docker volumes (RECLAIMABLE)..." | tee -a "$LOCAL_LOG"
|
echo "Pruning unused docker data..." | tee -a "$LOCAL_LOG"
|
||||||
docker volume prune -f 2>&1 | tee -a "$LOCAL_LOG"
|
docker system prune -f 2>&1 | tee -a "$LOCAL_LOG"
|
||||||
|
echo "Pruning unused docker volumes..." | tee -a "$LOCAL_LOG"
|
||||||
|
docker volume prune -f 2>&1 | tee -a "$LOCAL_LOG"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 4. pnpm/npm check
|
# 4. pnpm/npm check
|
||||||
if command -v pnpm &> /dev/null; then
|
if command -v pnpm &> /dev/null; then
|
||||||
echo "[4/6] Checking global pnpm packages..." | tee -a "$LOCAL_LOG"
|
echo "[4/6] Checking global pnpm packages..." | tee -a "$LOCAL_LOG"
|
||||||
pnpm list -g --depth 0 | tee -a "$LOCAL_LOG"
|
pnpm list -g --depth 0 | tee -a "$LOCAL_LOG"
|
||||||
echo "Suggested: pnpm store prune" | tee -a "$LOCAL_LOG"
|
if [ "$CHECK_MODE" = false ]; then
|
||||||
|
echo "Pruning pnpm store..." | tee -a "$LOCAL_LOG"
|
||||||
|
pnpm store prune 2>&1 | tee -a "$LOCAL_LOG"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 5. Git Repos Status
|
# 5. Git Repos Status
|
||||||
echo "[5/6] Checking infra repo status..." | tee -a "$LOCAL_LOG"
|
echo "[5/6] Checking infra repo status..." | tee -a "$LOCAL_LOG"
|
||||||
git status | tee -a "$LOCAL_LOG"
|
git status | tee -a "$LOCAL_LOG"
|
||||||
|
|
||||||
# 6. Disk Space Check (after cleanup)
|
# 6. Disk Space Check
|
||||||
echo "[6/6] Current disk usage summary:" | tee -a "$LOCAL_LOG"
|
echo "[6/6] Current disk usage summary:" | tee -a "$LOCAL_LOG"
|
||||||
df -h / | tail -n 1 | tee -a "$LOCAL_LOG"
|
df -h / | tee -a "$LOCAL_LOG"
|
||||||
|
|
||||||
echo "--- Maintenance Complete $(date) ---" | tee -a "$LOCAL_LOG"
|
echo "--- Maintenance Task Finished $(date) ---" | tee -a "$LOCAL_LOG"
|
||||||
Reference in New Issue
Block a user