feat: add version checking and install manifest tracking

Add minimum version validation for all dependencies across local and
remote machines (jq>=1.6, curl>=7.70, git>=2.30, docker>=20.0,
compose>=2.0, shellcheck>=0.8, gh>=2.0). Setup scripts now record
every install action to .manifests/<host>.manifest files, enabling
full rollback via setup/cleanup.sh. teardown_all.sh gains --cleanup
flag to chain prerequisite removal after phase teardowns.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
S
2026-02-26 19:35:09 -06:00
parent 720197bb10
commit 07d27f7a9c
9 changed files with 605 additions and 3 deletions

View File

@@ -22,6 +22,11 @@ log_info "Verifying Fedora OS..."
require_remote_os "FEDORA" "Linux" "Fedora target must be a Linux machine — check FEDORA_IP in .env"
require_remote_pkg_manager "FEDORA" "dnf" "Fedora target must have dnf (RPM-based distro) — this script won't work on Debian/Ubuntu"
# --------------------------------------------------------------------------
# Manifest — track what we install for rollback/cleanup
# --------------------------------------------------------------------------
manifest_init "fedora"
# --------------------------------------------------------------------------
# SSH connectivity
# --------------------------------------------------------------------------
@@ -40,12 +45,19 @@ if ssh_exec FEDORA "docker --version" &>/dev/null; then
else
log_info "Installing Docker CE on Fedora..."
ssh_exec FEDORA "sudo dnf -y install dnf-plugins-core"
manifest_record "fedora" "dnf_pkg" "dnf-plugins-core"
ssh_exec FEDORA "sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo"
ssh_exec FEDORA "sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin"
manifest_record "fedora" "dnf_pkg" "docker-ce"
manifest_record "fedora" "dnf_pkg" "docker-ce-cli"
manifest_record "fedora" "dnf_pkg" "containerd.io"
manifest_record "fedora" "dnf_pkg" "docker-compose-plugin"
ssh_exec FEDORA "sudo systemctl enable --now docker"
manifest_record "fedora" "systemd_svc" "docker"
# Add user to docker group
ssh_exec FEDORA "sudo usermod -aG docker $FEDORA_SSH_USER"
manifest_record "fedora" "docker_group" "$FEDORA_SSH_USER"
log_warn "User $FEDORA_SSH_USER added to docker group. You may need to re-login for this to take effect."
if ssh_exec FEDORA "docker --version" &>/dev/null; then
@@ -74,6 +86,7 @@ if ssh_exec FEDORA "jq --version" &>/dev/null; then
else
log_info "Installing jq on Fedora..."
ssh_exec FEDORA "sudo dnf -y install jq"
manifest_record "fedora" "dnf_pkg" "jq"
if ssh_exec FEDORA "jq --version" &>/dev/null; then
log_success "jq installed on Fedora"
else
@@ -82,6 +95,14 @@ else
fi
fi
# --------------------------------------------------------------------------
# Minimum version checks for remote tools
# --------------------------------------------------------------------------
log_info "Checking minimum versions on Fedora..."
check_remote_min_version "FEDORA" "docker" "docker --version" "20.0"
check_remote_min_version "FEDORA" "docker-compose" "docker compose version" "2.0"
check_remote_min_version "FEDORA" "jq" "jq --version" "1.6"
# --------------------------------------------------------------------------
# Verify Docker works without sudo
# --------------------------------------------------------------------------