96 lines
4.6 KiB
Bash
96 lines
4.6 KiB
Bash
#!/bin/bash
|
||
# ============================================================
|
||
# ЗАДАНИЕ 3. Настройка BR-SRV (Linux / РЕД ОС 8)
|
||
# 1. Импорт пользователей: import.sh + users.csv из Additional.iso
|
||
# (import.sh сам запрашивает путь к файлу-источнику)
|
||
# 7. Инвентаризация через Ansible: плейбук из образа, отчёты в
|
||
# /etc/ansible/PC-INFO в формате .yml (имя файла = имя ПК)
|
||
# ============================================================
|
||
|
||
# --- Проверка прав 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
|
||
|
||
# --- 1. Импорт пользователей ---
|
||
IMPORT_SCRIPT="$ISO_DIR/import.sh" # по заданию — в корне образа
|
||
USERS_CSV="$ISO_DIR/users.csv" # файл-источник по заданию
|
||
|
||
# --- 7. Плейбук для инвентаризации ---
|
||
ANSIBLE_DIR="/etc/ansible"
|
||
PLAYBOOK_SRC="$ISO_DIR/playbook" # директория плейбука в образе
|
||
PLAYBOOK_DST="$ANSIBLE_DIR/playbook" # куда копируем на BR-SRV
|
||
REPORT_DIR="$ANSIBLE_DIR/PC-INFO" # отчёты .yml по имени ПК
|
||
|
||
# ============ Проверка заполнения переменных ============
|
||
MISSING=()
|
||
for NAME in EXAM_TZ; do
|
||
[[ -z "${!NAME}" ]] && MISSING+=("$NAME")
|
||
done
|
||
if [[ ${#MISSING[@]} -gt 0 ]]; then
|
||
echo "Заполните переменные в начале скрипта: ${MISSING[*]}"
|
||
exit 1
|
||
fi
|
||
|
||
echo "=== Настройка BR-SRV, задание 3 ==="
|
||
|
||
# --- 1. Импорт пользователей (import.sh сам спрашивает путь) ---
|
||
echo "--- Импорт пользователей из $USERS_CSV ---"
|
||
if [[ -x "$IMPORT_SCRIPT" || -f "$IMPORT_SCRIPT" ]]; then
|
||
echo "Скрипт найден: $IMPORT_SCRIPT"
|
||
echo "Он интерактивно запрашивает файл-источник — запустите вручную:"
|
||
echo " bash $IMPORT_SCRIPT и в ответ на вопрос укажите $USERS_CSV"
|
||
echo "После импорта проверьте: samba-tool user list"
|
||
# Проверку запускаем только если обе вещи на месте:
|
||
bash "$IMPORT_SCRIPT" || echo "ЗАПУСТИТЕ ВРУЧНУЮ с указанием $USERS_CSV (см. выше)"
|
||
else
|
||
echo "ДЕЛАЕТСЯ ВРУЧНУЮ: $IMPORT_SCRIPT не найден — смонтируйте Additional.iso в $ISO_DIR"
|
||
fi
|
||
|
||
# --- 2. Плейбук для инвентаризации машин HQ-SRV и HQ-CLI ---
|
||
echo "--- Плейбук инвентаризации ---"
|
||
if [[ -d "$PLAYBOOK_SRC" ]]; then
|
||
mkdir -p "$PLAYBOOK_DST"
|
||
cp -f "$PLAYBOOK_SRC"/* "$PLAYBOOK_DST/" 2>/dev/null \
|
||
|| echo "ПРОВЕРИТЬ: в $PLAYBOOK_SRC нет файлов?"
|
||
ls -l "$PLAYBOOK_DST"
|
||
else
|
||
echo "ДЕЛАЕТСЯ ВРУЧНУЮ: нет $PLAYBOOK_SRC — смонтируйте Additional.iso в $ISO_DIR"
|
||
fi
|
||
mkdir -p "$REPORT_DIR"
|
||
echo "Плейбуки в $PLAYBOOK_DST. Запуск (с BR-SRV, из задания 2 настроен ansible):"
|
||
# Запускаем первый найденный .yml (имя файла в образе нам неизвестно заранее)
|
||
PLAYBOOK_YML=""
|
||
shopt -s nullglob
|
||
for F in "$PLAYBOOK_DST"/*.yml "$PLAYBOOK_DST"/*.yaml; do
|
||
PLAYBOOK_YML="$F"
|
||
break
|
||
done
|
||
shopt -u nullglob
|
||
if [[ -n "$PLAYBOOK_YML" ]]; then
|
||
echo " ansible-playbook $PLAYBOOK_YML"
|
||
ansible-playbook "$PLAYBOOK_YML" \
|
||
|| echo "ПРОВЕРИТЬ: плейбук не отработал — посмотрите его содержимое и ошибки"
|
||
else
|
||
echo "ДЕЛАЕТСЯ ВРУЧНУЮ: .yml не найден в $PLAYBOOK_DST"
|
||
fi
|
||
|
||
echo ""
|
||
echo "Отчёты должны появиться в $REPORT_DIR (имя файла = имя ПК):"
|
||
ls -l "$REPORT_DIR" || true
|
||
|
||
timedatectl set-timezone "$EXAM_TZ"
|
||
|
||
echo ""
|
||
echo "=== Самопроверка на BR-SRV ==="
|
||
echo "Импортированные пользователи (должны появиться из users.csv):"
|
||
samba-tool user list
|
||
echo ""
|
||
echo "Отчёты инвентаризации:"
|
||
ls -l "$REPORT_DIR"
|