initial commit

This commit is contained in:
unknown
2026-02-19 20:05:04 +03:00
parent 1ee67d8159
commit 05097d5dda
32 changed files with 4413 additions and 3 deletions

View File

@@ -0,0 +1,168 @@
#!/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 завершён: Сеть настроена"