152 lines
5.5 KiB
Bash
Executable File
152 lines
5.5 KiB
Bash
Executable File
#!/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
|