Files
gitserver/01/01-k-server-initial-setup.all.sh
2026-02-19 20:05:04 +03:00

152 lines
5.5 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
#===============================================================================
# ГЛАВНЫЙ СКРИПТ: ЗАПУСК ВСЕХ ШАГОВ ПЕРВОНАЧАЛЬНОЙ НАСТРОЙКИ
#===============================================================================
# Запуск: sudo bash 01-k-server-initial-setup.all.sh [step_number]
#
# Без аргументов - запуск всех шагов по порядку
# С номером шага - запуск конкретного шага
#
# Примеры:
# sudo bash 01-k-server-initial-setup.all.sh # все шаги
# sudo bash 01-k-server-initial-setup.all.sh 6 # только шаг 6 (SSH)
# sudo bash 01-k-server-initial-setup.all.sh 6-8 # шаги с 6 по 8
#===============================================================================
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
source "$SCRIPT_DIR/01-k-server-initial-setup.00.sh"
init_log
check_root
#-------------------------------------------------------------------------------
# Список шагов
#-------------------------------------------------------------------------------
declare -A STEPS=(
["01"]="Базовая настройка (hostname, timezone)"
["02"]="Настройка сети (netplan)"
["03"]="Обновление системы"
["04"]="Установка базовых пакетов"
["05"]="Создание администратора"
["06"]="Настройка SSH"
["07"]="Настройка Firewall (nftables)"
["08"]="Настройка Fail2ban"
["09"]="Настройка Swap"
["99"]="Финальная проверка"
)
#-------------------------------------------------------------------------------
# Функция запуска шага
#-------------------------------------------------------------------------------
run_step() {
local step="$1"
local script="$SCRIPT_DIR/01-k-server-initial-setup.${step}.sh"
if [[ ! -f "$script" ]]; then
print_error "Скрипт не найден: $script"
return 1
fi
print_header "ЗАПУСК ШАГА ${step}: ${STEPS[$step]}"
if bash "$script"; then
print_success "Шаг $step завершён успешно"
return 0
else
print_error "Шаг $step завершился с ошибкой"
return 1
fi
}
#-------------------------------------------------------------------------------
# Обработка аргументов
#-------------------------------------------------------------------------------
if [[ -n "$1" ]]; then
# Запуск конкретного шага или диапазона
if [[ "$1" =~ ^([0-9]+)-([0-9]+)$ ]]; then
# Диапазон шагов
START_STEP="${BASH_REMATCH[1]}"
END_STEP="${BASH_REMATCH[2]}"
print_info "Запуск шагов с $START_STEP по $END_STEP"
for step in $(echo "${!STEPS[@]}" | tr ' ' '\n' | sort); do
if [[ "$step" -ge "$START_STEP" && "$step" -le "$END_STEP" ]]; then
run_step "$step" || exit 1
fi
done
elif [[ "$1" =~ ^[0-9]+$ ]]; then
# Один шаг
run_step "$1" || exit 1
else
print_error "Неверный аргумент: $1"
echo "Использование: $0 [step_number|start-end]"
exit 1
fi
else
# Запуск всех шагов
echo ""
echo -e "${BLUE}================================================================${NC}"
echo -e "${BLUE} ПОЛНЫЙ ЗАПУСК ПЕРВОНАЧАЛЬНОЙ НАСТРОЙКИ СЕРВЕРА${NC}"
echo -e "${BLUE}================================================================${NC}"
echo ""
# Показать конфигурацию
show_config
echo "Будут выполнены следующие шаги:"
echo ""
for step in $(echo "${!STEPS[@]}" | tr ' ' '\n' | sort); do
echo " [$step] ${STEPS[$step]}"
done
echo ""
read -p "Начать настройку? [y/N]: " CONFIRM
if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then
echo "Отменено."
exit 0
fi
# Запуск шагов
FAILED_STEPS=()
for step in $(echo "${!STEPS[@]}" | tr ' ' '\n' | sort); do
echo ""
echo -e "${CYAN}============================================================${NC}"
echo -e "${CYAN} ШАГ $step: ${STEPS[$step]}${NC}"
echo -e "${CYAN}============================================================${NC}"
if run_step "$step"; then
:
else
FAILED_STEPS+=("$step")
echo ""
read -p "Продолжить со следующим шагом? [y/N]: " CONTINUE
if [[ ! "$CONTINUE" =~ ^[Yy]$ ]]; then
break
fi
fi
done
# Итог
echo ""
echo -e "${BLUE}================================================================${NC}"
echo -e "${BLUE} ИТОГ ВЫПОЛНЕНИЯ${NC}"
echo -e "${BLUE}================================================================${NC}"
if [[ ${#FAILED_STEPS[@]} -eq 0 ]]; then
echo -e "${GREEN}Все шаги выполнены успешно!${NC}"
else
echo -e "${RED}Завершились с ошибкой: ${FAILED_STEPS[*]}${NC}"
echo ""
echo "Для повторного запуска:"
echo " sudo bash $0омерага>"
fi
fi