Pulse/scripts
rcourtman 7141c8b1b5 Implement full cleanup when nodes are removed from Pulse
Extends cleanup script to completely remove Pulse footprint from hosts
when nodes are removed, not just SSH keys. Now removes: SSH keys, proxy
service, binaries, API tokens, pulse-monitor user, and LXC bind mounts.

Key improvements:

1. **flock Serialization**: Prevents concurrent cleanup runs
   - Acquires exclusive lock on cleanup.lock file
   - Prevents race conditions and cleanup loops

2. **Immediate Request File Deletion**: Delete cleanup-request.json
   before any long-running operations to prevent re-triggering

3. **API Token Cleanup**: Removes all pulse-monitor@pam API tokens
   - Tries JSON output first (Proxmox 7.0+)
   - Falls back to table parsing with proper filtering (no decoration chars)
   - Deletes pulse-monitor@pam user after removing all tokens

4. **LXC Bind Mount Removal**: Scans all container configs and removes
   pulse-sensor-proxy bind mount entries

5. **Process Isolation for Uninstaller**: Uses systemd-run to spawn
   isolated transient unit that won't be killed when proxy service stops
   - Unit name: pulse-uninstall-{timestamp}
   - Properties: Type=oneshot, Conflicts=pulse-sensor-proxy.service
   - Runs non-blocking so cleanup service can exit cleanly
   - Falls back to direct call if systemd-run unavailable

6. **Complete Service/Binary Removal**: Calls installer's --uninstall
   - Stops and disables pulse-sensor-proxy.service
   - Removes all systemd units
   - Deletes all binaries from /opt/pulse/sensor-proxy/
   - Removes configuration files
   - Cleans up directories

Changes to cleanup script logic:
- Added LOCKFILE and INSTALLER_PATH configuration
- Acquire flock before processing (prevents concurrent runs)
- Delete request file immediately after reading
- Full localhost cleanup: SSH keys → API tokens → bind mounts → uninstall
- Remote cleanup still SSH-key-only (can't orchestrate uninstall remotely)
- Better error handling with appropriate log levels

Updated cleanup service unit:
- ExecStart now uses ${CLEANUP_SCRIPT_PATH} variable (new /opt location)
- Changed heredoc from 'SERVICE_EOF' to SERVICE_EOF for variable expansion

Addresses all issues documented in CLEANUP_TODO.md:
-  Read-only filesystem (binaries now in /opt, removable)
-  Process isolation (systemd-run transient unit)
-  Cleanup loops (flock + immediate file deletion)
-  API token parsing (JSON first, filtered table fallback)

The UI message is now accurate: "Removing this proxmox ve node also
scrubs the Pulse footprint on the host — the proxy service, SSH key,
API token, and bind mount are all cleaned up automatically."

Part of: CLEANUP_TODO.md Phase 2-4
Supersedes: ed65fda74 (original cleanup attempt with process issues)
Depends on: b192c60e9 (binary relocation to /opt)
2025-11-15 00:03:09 +00:00
..
dev Fix settings security tab navigation 2025-10-11 23:29:47 +00:00
lib feat: add shared script library system and refactor docker-agent installer 2025-10-20 15:13:38 +00:00
systemd Fix temperature monitoring on standalone Proxmox nodes (addresses #571) 2025-11-13 13:02:15 +00:00
tests Improve temperature proxy diagnostics and tests 2025-11-13 22:31:53 +00:00
.go-version Fix settings security tab navigation 2025-10-11 23:29:47 +00:00
backup-claude-md.sh Fix critical version embedding issues for 4.26 release 2025-11-06 11:42:52 +00:00
build-release.sh Release workflow guardrails (related to #695) 2025-11-11 22:34:00 +00:00
bundle.manifest feat: add shared script library system and refactor docker-agent installer 2025-10-20 15:13:38 +00:00
bundle.sh feat: add shared script library system and refactor docker-agent installer 2025-10-20 15:13:38 +00:00
clean-mock-alerts.sh Add guest agent caching and update doc hints (refs #560) 2025-10-16 08:15:49 +00:00
cleanup.sh Refactor: Code cleanup and localStorage consolidation 2025-11-04 21:50:46 +00:00
codex-router.sh Update Pulse install flow and related components 2025-10-21 19:58:53 +00:00
create-sensor-user.sh security: complete Phase 1 sensor proxy hardening 2025-10-20 15:13:37 +00:00
docker-build.sh security: complete Phase 1 sensor proxy hardening 2025-10-20 15:13:37 +00:00
generate-release-notes.sh Polish release notes fallback 2025-11-13 09:10:43 +00:00
harden-sensor-proxy.sh security: complete Phase 1 sensor proxy hardening 2025-10-20 15:13:37 +00:00
hot-dev.sh chore: snapshot current changes 2025-11-02 22:47:55 +00:00
install-container-agent.sh Add support for linux-386 and linux-armv6 architectures (related to #674) 2025-11-09 08:35:24 +00:00
install-docker-agent-v2.sh Refactor: Code cleanup and localStorage consolidation 2025-11-04 21:50:46 +00:00
install-docker-agent.sh Handle Snap Docker home restrictions (Related to #693) 2025-11-12 19:20:04 +00:00
install-docker.sh Refactor: Code cleanup and localStorage consolidation 2025-11-04 21:50:46 +00:00
install-go-toolchain.sh Fix settings security tab navigation 2025-10-11 23:29:47 +00:00
install-host-agent.ps1 Related to #710: harden Windows installer arch detection 2025-11-14 10:50:56 +00:00
install-host-agent.sh Fix SELinux compatibility in host agent installer 2025-11-11 21:13:33 +00:00
install-sensor-proxy.sh Implement full cleanup when nodes are removed from Pulse 2025-11-15 00:03:09 +00:00
package-helm-chart.sh release: prepare v4.25.0 2025-10-22 10:46:18 +00:00
pulse-auto-update.sh Refactor: Code cleanup and localStorage consolidation 2025-11-04 21:50:46 +00:00
pulse-proxy-rotate-keys.sh refactor: Rename pulse-temp-proxy to pulse-sensor-proxy 2025-10-13 13:17:05 +00:00
pulse-sensor-cleanup.sh Extend node cleanup to fully remove Pulse footprint 2025-11-14 22:58:50 +00:00
pulse-sensor-proxy.service Fix temperature monitoring for clustered and LXC Proxmox environments (addresses #571) 2025-11-13 13:25:27 +00:00
run-tests-mock.sh Adopt multi-token auth across docs, UI, and tooling 2025-10-14 15:47:49 +00:00
secure-sensor-files.sh security: complete Phase 1 sensor proxy hardening 2025-10-20 15:13:37 +00:00
setup-log-forwarding.sh docs: highlight runbooks in index and script verification checklist 2025-11-14 10:39:10 +00:00
sync-production-config.sh refactor: remove legacy DISABLE_AUTH flag and enhance authentication UX 2025-10-27 19:46:51 +00:00
test-vm-disk.sh Update Proxmox guest agent permissions docs and tooling (refs #548) 2025-10-14 10:21:52 +00:00
toggle-mock.sh refactor: remove legacy DISABLE_AUTH flag and enhance authentication UX 2025-10-27 19:46:51 +00:00
trigger-release.sh Fix remote sync check in release trigger script 2025-11-13 11:43:36 +00:00
uninstall-host-agent.ps1 Refine Windows host installer logging (related to #709) 2025-11-13 23:09:22 +00:00
uninstall-host-agent.sh feat: enhance macOS/Linux agent installation to match Windows quality 2025-10-23 22:23:23 +00:00
validate-published-release.sh Related to #698: harden installer release detection 2025-11-12 17:56:16 +00:00
validate-release.sh Fix Windows/macOS host agent downloads for bare metal installs (related to #684) 2025-11-11 21:26:33 +00:00