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:
@@ -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
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user