Comprehensive documentation gardening across the merged repo: - tailscale.md: fully rewritten with current ground truth. The netinfra pair now runs production Technitium with all knel.net records replicated. Both LAN IPs resolve knel.net device names and recurse externally. The old "NXDOMAIN / zone is stale" findings are replaced with the resolved state and current recommendations. - AGENTS.md: rewritten with Gitea-compatible clickable relative links to all key scripts and docs. Autonomous commit/push policy prominently documented. SSH user corrected to localuser. - README.md: directory table and docs table now use clickable links. - All .md cross-references converted to Gitea-renderable relative links. - Stale path references (ProjectCode/, Project-Tests/, ProjectDocs/) updated to current names (provisioning/, tests/) across all docs. - Stale repo name "FetchApply" / "KNELServerBuild" updated to "PFVCluster" in actionable docs; historical AI-review docs tagged with an HTML comment notice. - REFACTORING-EXAMPLES.md: tagged as historical (pre-refactor patterns). - tests/README.md, dns-cluster-setup/README.md, docs/DEPLOYMENT.md, docs/SECURITY.md: path references fixed to current structure. 🤖 Generated with [Crush](https://github.com/charmassociates/crush) Assisted-by: GLM-5 via Crush <crush@charm.land>
5.4 KiB
Claude TODO - TSYS PFVCluster Automation Tasks
Purpose: Actionable items optimized for AI assistant implementation
Priority: Critical → High → Medium → Low
🚨 CRITICAL (Immediate Security Fixes)
✅ RESOLVED: Secure Deployment Method
Previous Issue: curl | bash deployment method
Status: Fixed in README.md - now uses git clone + local script execution
✅ RESOLVED: Replace HTTP URLs with HTTPS
Files modified:
provisioning/Dell/Server/omsa.sh- Converted 11 HTTP URLs to HTTPS (Ubuntu archive, Dell repo)provisioning/legacy/prox7.sh- Converted 2 HTTP URLs to HTTPS (Proxmox downloads)provisioning/Modules/RandD/sslStackFromSource.sh- Converted 3 HTTP URLs to HTTPS (Apache sources)
Status: All HTTP URLs in active scripts converted to HTTPS. Only remaining HTTP references are in comments and LibreNMS agent files (external dependencies).
TASK-002: Add Download Integrity Verification
Create new function in: Framework-Includes/VerifyDownload.sh
Function to implement:
function verify_download() {
local url="$1"
local expected_hash="$2"
local output_file="$3"
curl -fsSL "$url" -o "$output_file"
local actual_hash=$(sha256sum "$output_file" | cut -d' ' -f1)
if [ "$actual_hash" != "$expected_hash" ]; then
print_error "Hash verification failed for $output_file"
rm -f "$output_file"
return 1
fi
print_info "Download verified: $output_file"
}
TASK-003: Create Secure Deployment Script
Create: provisioning/SecureSetupNewSystem.sh
Features to implement:
- GPG signature verification
- SHA256 checksum validation
- HTTPS-only downloads
- Rollback capability
🔶 HIGH (Security Enhancements)
TASK-004: Remove Hardcoded SSH Keys
Files to modify:
provisioning/ConfigFiles/SSH/AuthorizedKeys/root-ssh-authorized-keysprovisioning/ConfigFiles/SSH/AuthorizedKeys/localuser-ssh-authorized-keysprovisioning/Modules/Security/secharden-ssh.sh:31,40,51
Implementation approach:
- Create environment variable support:
SSH_KEYS_URLorSSH_KEYS_VAULT_PATH - Modify secharden-ssh.sh to fetch keys from secure source
- Add key validation before deployment
TASK-005: Add Secrets Management Framework
Create: Framework-Includes/SecretsManager.sh
Functions to implement:
function get_secret() { } # Retrieve secret from vault
function validate_secret() { } # Validate secret format
function rotate_secret() { } # Trigger secret rotation
TASK-006: Enhanced Preflight Checks
Modify: Framework-Includes/PreflightCheck.sh
Add checks for:
- Network connectivity to required hosts
- Disk space requirements
- Existing conflicting software
- Required system capabilities
🔹 MEDIUM (Operational Improvements)
TASK-007: Add Configuration Backup
Create: Framework-Includes/ConfigBackup.sh
Functions:
function backup_config() { } # Create timestamped backup
function restore_config() { } # Restore from backup
function list_backups() { } # Show available backups
TASK-008: Implement State Tracking
Create: Framework-Includes/StateManager.sh
Track:
- Deployment progress
- Module completion status
- Rollback points
- System changes made
TASK-009: Add Retry Logic
Enhance existing scripts with:
- Configurable retry attempts for network operations
- Exponential backoff for failed operations
- Circuit breaker for repeatedly failing services
🔸 LOW (Quality of Life)
TASK-010: Enhanced Logging
Modify: Framework-Includes/Logging.sh
Add:
- Structured logging (JSON format option)
- Log levels (DEBUG, INFO, WARN, ERROR)
- Remote logging capability
- Log rotation management
TASK-011: Progress Indicators
Add to: Framework-Includes/PrettyPrint.sh
function show_progress() { } # Display progress bar
function update_status() { } # Update current operation
TASK-012: Dry Run Mode
Add to: provisioning/SetupNewSystem.sh
Implementation:
--dry-runflag support- Preview of changes without execution
- Dependency analysis output
Implementation Order for Claude
Updated Priority After Security Fix (July 14, 2025):
- Start with TASK-001 (HTTPS enforcement - simple find/replace operations)
- Create framework functions (TASK-002, TASK-005, TASK-007)
- Enhance existing modules (TASK-004, TASK-006)
- Add operational features (TASK-008, TASK-009)
- Improve user experience (TASK-010, TASK-011, TASK-012)
Note: Major deployment security risk resolved - remaining tasks focus on hardening internal operations.
File Location Patterns
- Framework components:
Framework-Includes/*.sh - Security modules:
provisioning/Modules/Security/*.sh - Configuration files:
provisioning/ConfigFiles/*/ - Main entry point:
provisioning/SetupNewSystem.sh
Testing Strategy
For each task:
- Create backup of original files
- Implement changes incrementally
- Test with
bash -nfor syntax validation - Verify functionality with controlled test runs
- Document changes made
Error Handling Requirements
All new functions must:
- Use
set -euo pipefailcompatibility - Integrate with existing error handling framework
- Log errors to
$LOGFILENAME - Return appropriate exit codes
- Clean up temporary files on failure