#!/bin/bash # ============================================================ # ЗАДАНИЕ 2. Настройка BR-SRV (Linux / РЕД ОС 8) # DC samba уже установлен на стенде — настраиваем домен дальше: # 1. Пользователи hquser1..5, политика паролей, группа hq # 5. Ansible: инвентарь (HQ-SRV, HQ-CLI, HQ-RTR, BR-RTR), каталог /etc/ansible # 6. Docker: стек testapp из Additional.iso (порт 8080 наружу) # ============================================================ # --- Проверка прав root --- if [[ $EUID -ne 0 ]]; then echo "Запустите скрипт с правами root (sudo bash br-srv.sh)" exit 1 fi # ================= ПЕРЕМЕННЫЕ (заполните перед запуском) ================= EXAM_TZ="Asia/Yekaterinburg" # по заданию — Екатеринбург ISO_DIR="/mnt/iso" # точка монтирования Additional.iso DOMAN="au-team.irpo" # --- 1. Samba DC (утилита samba-tool; ПРОВЕРИТЬ путь на РЕД ОС 8) --- SMB_DOMAIN="au-team.irpo" SMB_DB_USER="administrator" # ПРОВЕРИТЬ как называется админ DC на стенде DOMAIN_USER_PASS="P@ssw0rd" # пароль пользователей hquser1..5 (по желанию) NUM_HQ_USERS="5" # количество пользователей по заданию MIN_PWD_LENGTH="8" # минимальная длина пароля по заданию LOCKOUT_ATTEMPTS="5" # блокировка после N неудачных попыток # Команда для lockout зависит от версии samba — ПРОВЕРИТЬ на стенде: # samba-tool domain settings set --lockout-attempt=5 (новые версии) # samba-tool domain passwordsettings set --lockout-threshold=5 (старые) LOCKOUT_CMD="samba-tool domain settings set --lockout-attempt=$LOCKOUT_ATTEMPTS" # --- 5. Ansible --- ANSIBLE_PACKAGE="ansible-core" # ПРОВЕРИТЬ: пакет ansible на РЕД ОС 8 ANSIBLE_DIR="/etc/ansible" INVENTORY="$ANSIBLE_DIR/inventory" ANSIBLE_CFG="$ANSIBLE_DIR/ansible.cfg" # --- Адреса и учётные данные для инвентаря (без префиксов) --- HQ_SRV_IP="" HQ_CLI_IP="" HQ_RTR_IP="" BR_RTR_IP="" HQ_SRV_USER="sshuser" # пользователь из задания 1 на HQ-SRV HQ_CLI_USER="sshuser" HQ_RTR_USER="net_admin" BR_RTR_USER="net_admin" # SSH-ключ для ansible: ключ генерим, но copy-id на каждый хост требует # пароль — это РУЧНОЙ шаг (MANUAL.md) ANSIBLE_KEY="/root/.ssh/id_ed25519" # --- 6. Docker --- DOCKER_PACKAGE="docker-engine" # ПРОВЕРИТЬ: пакет docker на РЕД ОС 8 (docker-ce?) DOCKER_SERVICE="docker" APP_DIR="/opt/testapp" # рабочий каталог стека ISO_DOCKER_DIR="$ISO_DIR/docker" # образы site_latest, mariadb_latest (ПРОВЕРИТЬ имена файлов) COMPOSE_FILE="compose.yaml" # файл compose из Additional.iso APP_EXTERNAL_PORT="8080" # наружу приложение доступно через этот порт # ============ Проверка заполнения переменных ============ MISSING=() for NAME in HQ_SRV_IP HQ_CLI_IP HQ_RTR_IP BR_RTR_IP EXAM_TZ; do [[ -z "${!NAME}" ]] && MISSING+=("$NAME") done if [[ ${#MISSING[@]} -gt 0 ]]; then echo "Заполните переменные в начале скрипта: ${MISSING[*]}" exit 1 fi echo "=== Настройка BR-SRV, задание 2 ===" # --- 1. Пользователи hquser1..5, политика, группа hq --- echo "--- Samba: доменные пользователи и группа ---" samba-tool domain passwordsettings set --min-pwd-length="$MIN_PWD_LENGTH" \ || echo "ПРОВЕРИТЬ: не установилась min-pwd-length" $LOCKOUT_CMD \ || echo "ПРОВЕРИТЬ: не сработала установка lockout (см. комментарий в переменных выше)" for i in $(seq 1 "$NUM_HQ_USERS"); do if samba-tool user list | grep -qw "hquser${i}"; then echo "hquser${i} уже существует" else samba-tool user create "hquser${i}" "$DOMAIN_USER_PASS" \ || echo "ПРОВЕРИТЬ: не создан hquser${i}" fi done if samba-tool group list | grep -qw "hq"; then echo "Группа hq уже существует" else samba-tool group create hq fi samba-tool group addmembers hq "hquser1,hquser2,hquser3,hquser4,hquser5" 2>/dev/null \ || echo "ПРОВЕРИТЬ: члены не добавлены — вручную: samba-tool group addmembers hq hquser1,hquser2,..." samba-tool group listmembers hq # --- 5. Ansible --- echo "--- Ansible (каталог /etc/ansible) ---" dnf install -y "$ANSIBLE_PACKAGE" || echo "ПРОВЕРИТЬ: пакет $ANSIBLE_PACKAGE не установился" mkdir -p "$ANSIBLE_DIR" cat > "$ANSIBLE_CFG" < "$INVENTORY" </dev/null || echo "ПРОВЕРИТЬ: ansible не установился" echo "" echo "ansible all -m ping (после ручного ssh-copy-id, см. выше)" echo "docker ps (контейнеры testapp и mariadb?)" echo "" echo "Связность через задание 1 (без неё ansible/docker не заработают):" echo " ping -c2 $HQ_RTR_IP (маршрутизация через туннель)" echo " ping -c2 $HQ_SRV_IP"