#!/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