zarya/layers/reset.sh

60 lines
2.5 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
source "$(dirname "${BASH_SOURCE[0]}")/../lib/common.sh"
RESET_WIPE_HISTORY="${RESET_WIPE_HISTORY:-false}"
log_warn "ВНИМАНИЕ! Инициирована процедура полного уничтожения инфраструктуры Proxmox VE."
log_info "Очистка текущей RAM-сессии. Требуется физическая повторная аутентификация..."
rm -f "${RAM_CACHE}" /dev/shm/.atlas_core
read -s -p "Master Password для подтверждения сноса: " KP_PASS
echo ""
yk_args=()
if ykman info >/dev/null 2>&1; then
yk_args=("-y" "2")
log_info "Приготовьтесь к аппаратному подтверждению (касание YubiKey)..."
fi
tmp_verify="/dev/shm/.verify_$$"
if ! echo "${KP_PASS}" | timeout 15 keepassxc-cli export "${yk_args[@]}" "${KDBX_PATH}" -f xml > "${tmp_verify}" 2>/dev/null; then
log_err "Аппаратная проверка провалена или таймаут касания. Доступ заблокирован."
rm -f "${tmp_verify}"
unset KP_PASS
if [[ "${RESET_WIPE_HISTORY}" == "true" ]]; then
history -c 2>/dev/null || true
fi
exit 1
fi
rm -f "${tmp_verify}"
unset KP_PASS
log_ok "Аппаратная проверка YubiKey и пароля подтверждена."
read -r -p "Введите 'CONFIRM-DESTRUCTION' для безвозвратного уничтожения: " confirm
if [[ "${confirm}" != "CONFIRM-DESTRUCTION" ]]; then
log_warn "Отмена операции."
exit 0
fi
log_info "Снятие защиты и уничтожение виртуальных машин и контейнеров на Proxmox..."
ssh proxmox bash << 'SSHEOF'
for id in 100 201 202 203; do
qm stop $id --skiplock 1 2>/dev/null || true
qm destroy $id --purge 1 --destroy-unreferenced-disks 1 2>/dev/null || true
done
for id in 101 102 103 104 105; do
pct set $id -protection 0 2>/dev/null || true
pct stop $id --skiplock 1 2>/dev/null || true
pct destroy $id --purge 1 --force 1 2>/dev/null || true
done
SSHEOF
log_info "Очистка локального стейта OpenTofu..."
rm -f "${REPO_ROOT}/tofu/terraform.tfstate"* "${REPO_ROOT}/tofu/.terraform.tfstate.lock.info"
rm -f "${RAM_CACHE}" /dev/shm/.atlas_core
if [[ "${RESET_WIPE_HISTORY}" == "true" ]]; then
history -c 2>/dev/null || true
fi
log_ok "Сервер зачищен до голого железа."