Move source checkout to opt and auto-detect install user

Этот коммит содержится в:
Виктор
2026-05-06 20:32:09 +09:00
родитель ea13bf3bd7
Коммит 3e30fbf212
+22 -12
Просмотреть файл
@@ -7,13 +7,10 @@ set -euo pipefail
# ========================================================== # ==========================================================
REPO_URL="${VIRTUALITY_REPO_URL:-https://github.com/viktor138irk/virtuality.git}" REPO_URL="${VIRTUALITY_REPO_URL:-https://github.com/viktor138irk/virtuality.git}"
INSTALL_USER="${VIRTUALITY_USER:-viktor}" DEFAULT_INSTALL_USER="${SUDO_USER:-root}"
if [[ "$INSTALL_USER" == "root" ]]; then INSTALL_USER="${VIRTUALITY_USER:-$DEFAULT_INSTALL_USER}"
INSTALL_HOME="/root" PROJECT_BASE_DIR="${VIRTUALITY_PROJECT_BASE_DIR:-/opt/virtuality}"
else PROJECT_DIR="${VIRTUALITY_PROJECT_DIR:-${PROJECT_BASE_DIR}/source}"
INSTALL_HOME="/home/${INSTALL_USER}"
fi
PROJECT_DIR="${INSTALL_HOME}/virtuality"
RUN_BRIDGE="${VIRTUALITY_SETUP_BRIDGE:-0}" RUN_BRIDGE="${VIRTUALITY_SETUP_BRIDGE:-0}"
BRIDGE_IFACE="${VIRTUALITY_BRIDGE_IFACE:-}" BRIDGE_IFACE="${VIRTUALITY_BRIDGE_IFACE:-}"
RUN_TEST_VM="${VIRTUALITY_CREATE_TEST_VM:-0}" RUN_TEST_VM="${VIRTUALITY_CREATE_TEST_VM:-0}"
@@ -48,7 +45,7 @@ step() { echo; echo -e "${BLUE}${BOLD}▶${RESET} ${BOLD}$*${RESET}"; log "STEP:
run_logged() { run_logged() {
local desc="$1" local desc="$1"
shift shift
local start_ts pid code spinner elapsed symbol local start_ts pid code spinner elapsed symbol i
log "RUN: $*" log "RUN: $*"
start_ts="$(date +%s)" start_ts="$(date +%s)"
"$@" >> "$LOG_FILE" 2>&1 & "$@" >> "$LOG_FILE" 2>&1 &
@@ -80,7 +77,7 @@ header() {
echo -e "${CYAN}${BOLD}╰────────────────────────────────────────────────────────────╯${RESET}" echo -e "${CYAN}${BOLD}╰────────────────────────────────────────────────────────────╯${RESET}"
echo echo
echo -e "${GRAY}Repository:${RESET} ${REPO_URL}" echo -e "${GRAY}Repository:${RESET} ${REPO_URL}"
echo -e "${GRAY}Install user:${RESET} ${INSTALL_USER}" echo -e "${GRAY}Auth/install user:${RESET} ${INSTALL_USER}"
echo -e "${GRAY}Project dir:${RESET} ${PROJECT_DIR}" echo -e "${GRAY}Project dir:${RESET} ${PROJECT_DIR}"
echo -e "${GRAY}Log:${RESET} ${LOG_FILE}" echo -e "${GRAY}Log:${RESET} ${LOG_FILE}"
echo echo
@@ -153,7 +150,7 @@ check_requirements() {
ensure_user() { ensure_user() {
if [[ "$INSTALL_USER" == "root" ]]; then if [[ "$INSTALL_USER" == "root" ]]; then
ok "Установка выбрана из-под root. Пользователь root уже существует" ok "Пользователь авторизации: root"
check_password_state root check_password_state root
return 0 return 0
fi fi
@@ -177,6 +174,17 @@ run_as_user() {
fi fi
} }
prepare_project_dir() {
mkdir -p "$PROJECT_BASE_DIR"
if [[ "$INSTALL_USER" == "root" ]]; then
chown root:root "$PROJECT_BASE_DIR"
else
chown "$INSTALL_USER:$INSTALL_USER" "$PROJECT_BASE_DIR"
fi
chmod 755 "$PROJECT_BASE_DIR"
ok "Рабочая директория подготовлена: ${PROJECT_BASE_DIR}"
}
header header
step "Проверяем root и apt" step "Проверяем root и apt"
@@ -194,6 +202,9 @@ run_logged "Установлены sudo/git/curl/ca-certificates" apt install -y
step "Создаём или проверяем пользователя" step "Создаём или проверяем пользователя"
ensure_user ensure_user
step "Готовим рабочую директорию в /opt"
prepare_project_dir
step "Проверяем место после подготовки пользователя" step "Проверяем место после подготовки пользователя"
root_free_after="$(free_mb_for_path /)" root_free_after="$(free_mb_for_path /)"
if (( root_free_after < MIN_ROOT_FREE_MB )); then if (( root_free_after < MIN_ROOT_FREE_MB )); then
@@ -202,11 +213,10 @@ fi
ok "Место после подготовки пользователя: ${root_free_after} MB на /" ok "Место после подготовки пользователя: ${root_free_after} MB на /"
step "Клонируем или обновляем репозиторий" step "Клонируем или обновляем репозиторий"
mkdir -p "$INSTALL_HOME"
if [[ -d "$PROJECT_DIR/.git" ]]; then if [[ -d "$PROJECT_DIR/.git" ]]; then
run_logged "Репозиторий обновлён" run_as_user "cd '$PROJECT_DIR' && git reset --hard origin/main && git pull" run_logged "Репозиторий обновлён" run_as_user "cd '$PROJECT_DIR' && git reset --hard origin/main && git pull"
else else
run_logged "Репозиторий склонирован" run_as_user "cd '$INSTALL_HOME' && git clone '$REPO_URL' virtuality" run_logged "Репозиторий склонирован" run_as_user "cd '$PROJECT_BASE_DIR' && git clone '$REPO_URL' source"
fi fi
step "Запускаем основной установщик ноды" step "Запускаем основной установщик ноды"