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

169 lines
6.5 KiB
Bash
Executable File
Raw 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
#===============================================================================
# ШАГ 2: НАСТРОЙКА СЕТИ
#===============================================================================
# Запуск: sudo bash 01-k-server-initial-setup.02.sh
#
# Параметры сети настраиваются в файле 00.sh:
# NET_EXT_DHCP, NET_EXT_ADDRESS, NET_EXT_GATEWAY, NET_EXT_DNS
# NET_INT_DHCP, NET_INT_ADDRESS
#===============================================================================
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
source "$SCRIPT_DIR/01-k-server-initial-setup.00.sh"
init_log
check_root
print_header "ШАГ 2: НАСТРОЙКА СЕТИ"
#-------------------------------------------------------------------------------
# 2.1 Проверка интерфейсов
#-------------------------------------------------------------------------------
print_subheader "Проверка сетевых интерфейсов"
check_network_interfaces
#-------------------------------------------------------------------------------
# 2.2 Установка netplan
#-------------------------------------------------------------------------------
print_subheader "Проверка netplan"
if is_installed netplan.io; then
print_success "netplan.io установлен"
else
print_info "Установка netplan.io..."
apt install -y netplan.io
fi
#-------------------------------------------------------------------------------
# 2.3 Показать текущую конфигурацию сети
#-------------------------------------------------------------------------------
print_subheader "Параметры сети из конфигурации"
echo " Внешний интерфейс ($IFACE_EXT):"
if [[ "$NET_EXT_DHCP" == "true" ]]; then
echo " Режим: DHCP"
else
echo " Режим: Статический IP"
echo " Адрес: $NET_EXT_ADDRESS"
echo " Шлюз: $NET_EXT_GATEWAY"
echo " DNS: $NET_EXT_DNS"
fi
echo ""
echo " Внутренний интерфейс ($IFACE_INT):"
if [[ "$NET_INT_DHCP" == "true" ]]; then
echo " Режим: DHCP"
else
echo " Режим: Статический IP"
echo " Адрес: $NET_INT_ADDRESS"
fi
echo ""
#-------------------------------------------------------------------------------
# 2.4 Создание конфигурации netplan
#-------------------------------------------------------------------------------
print_subheader "Создание конфигурации netplan"
NETPLAN_FILE="/etc/netplan/01-netcfg.yaml"
# Проверка существующей конфигурации
if [[ -f "$NETPLAN_FILE" ]]; then
print_warning "Конфигурация netplan уже существует"
read -p "Перезаписать? [y/N]: " REWRITE
if [[ ! "$REWRITE" =~ ^[Yy]$ ]]; then
print_info "Конфигурация оставлена без изменений"
print_success "Шаг 2 завершён (пропуск)"
exit 0
fi
# Backup
cp "$NETPLAN_FILE" "${NETPLAN_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
fi
# Генерация конфигурации в зависимости от настроек
{
echo "# Netplan configuration for Git Server"
echo "# Автоматически сгенерировано скриптом 01-k-server-initial-setup.02.sh"
echo ""
echo "network:"
echo " version: 2"
echo " renderer: networkd"
echo " ethernets:"
echo " ${IFACE_EXT}:"
if [[ "$NET_EXT_DHCP" == "true" ]]; then
# DHCP для внешнего интерфейса
echo " dhcp4: true"
else
# Статический IP для внешнего интерфейса
echo " dhcp4: false"
echo " addresses:"
echo " - ${NET_EXT_ADDRESS}"
echo " routes:"
echo " - to: default"
echo " via: ${NET_EXT_GATEWAY}"
# DNS
IFS=',' read -ra DNS_ARRAY <<< "$NET_EXT_DNS"
echo " nameservers:"
echo " addresses:"
for dns in "${DNS_ARRAY[@]}"; do
echo " - ${dns}"
done
fi
echo " ${IFACE_INT}:"
if [[ "$NET_INT_DHCP" == "true" ]]; then
# DHCP для внутреннего интерфейса
echo " dhcp4: true"
else
# Статический IP для внутреннего интерфейса
echo " dhcp4: false"
echo " addresses:"
echo " - ${NET_INT_ADDRESS}"
fi
} > "$NETPLAN_FILE"
print_success "Конфигурация netplan создана: $NETPLAN_FILE"
#-------------------------------------------------------------------------------
# 2.5 Показать созданную конфигурацию
#-------------------------------------------------------------------------------
echo ""
echo -e "${CYAN}Созданная конфигурация:${NC}"
echo ""
cat "$NETPLAN_FILE"
#-------------------------------------------------------------------------------
# 2.6 Применение
#-------------------------------------------------------------------------------
echo ""
print_warning "Внимание! Применение новой сетевой конфигурации может нарушить подключение."
echo ""
read -p "Применить сетевую конфигурацию сейчас? [y/N]: " APPLY_NET
if [[ "$APPLY_NET" =~ ^[Yy]$ ]]; then
print_info "Проверка конфигурации..."
# Попробовать netplan try с таймаутом (вернёт старую конфигурацию при проблемах)
if netplan try --timeout 15 2>&1; then
print_success "Сетевая конфигурация применена"
else
print_error "Ошибка в конфигурации netplan или прервано пользователем"
print_info "Конфигурация не применена. Проверьте и исправьте $NETPLAN_FILE"
exit 1
fi
else
print_warning "Конфигурация не применена"
echo ""
echo "Примените вручную после проверки:"
echo " sudo netplan try --timeout 30"
echo " # или"
echo " sudo netplan apply"
fi
print_success "Шаг 2 завершён: Сеть настроена"