|
||
---|---|---|
ansible | ||
img | ||
02.txt | ||
readme.md |
readme.md
Выпускная квалификационная работа по курсу "Системное и сетевое администрирование ОС Альт"
Тема: Автоматизация развертывания служб каталога Active Directory
- Выпускная квалификационная работа по курсу "Системное и сетевое администрирование ОС Альт"
- Тема: Автоматизация развертывания служб каталога Active Directory
- Описание стенда
- Предварительная настройка
- Подготовка шаблона Альт Сервер
- Подготовка шаблона Альт Рабочая станция и Альт Рабочая станция К
- Разворачивание группировки виртуальных машин
- Подготовка первого контроллера домена
- Подготовка второго контроллера домена
- Создание пользователей контроллера домена
- Добавление компьютеров в домен
- Разворачивание файлового сервера
- Проверка работы домена
- Проверка работы файлового сервера
- Проверка отказоустойчивости домена
- Заключение
- Перечень используемых источников информации
- Тема: Автоматизация развертывания служб каталога Active Directory
Описание стенда
В основе стенда используется узел с установленной системой Альт Сервер виртуализации 10.1, в качестве гипервизора - решение PVE.
Рисунок 1 - Схема стенда
Для доступа к системе виртуализации и выполнения задач автоматизированной настройки и запуска скриптов используется узел с ОС Альт Рабочая станция 10.1 altcl (10.1.1.20)
.
Предварительная настройка
Для подготовки окружения будет использован Ansible, запускаться задания будут с узла altcl (10.1.1.20)
.
Для работы Ansible с гипервизором PVE, написан соответствующий модуль proxmox_kvm
. В свою очередь, для работы модуля proxmox_kvm
на узле виртуализации, необходимо установить пакеты requests
и proxmoxer
. В репозитории Альт это пакеты python3-module-proxmoxer
, python3-module-requests
.
Т. к. модуль proxmox_kvm
разработан сообществом, на узле altcl (10.1.1.20)
необходимо установить поддержку community модулей ansible командой
ansible-galaxy collection install community.general
Подготовка шаблона Альт Сервер
Шаблон будет подготовлен вручную — конвертирован из виртуальной машины, которая будет предварительно настроена.
Виртуальная машина имеет следующие характеристики:
- ОЗУ: 2 Гб
- ЦПУ: 2
- Диск: 32 Гб
- Диск CloudInit
остальные значения устанавливаются по-умолчанию. В качестве ОС используется Альт Сервер 10.1. При установке ОС используется профиль Минимальная установка
с отмеченным пунктом NetworkManager
, т. к. он необходим для работы CloudInit.
Рисунок 2 - Выбор компонентов ОС
После установки операционной системы необходимо выполнить обновление и установку дополнительных компонентов:
- обновление пакетов и ядра операционной системы
apt-get update && apt-get dist-upgrade -y && update-kernel -y
- установка дополнительных необязательных пакетов
apt-get install -y qemu-guest-agent mc tmux htop tree
- пакеты для работы CloudInit
apt-get install -y cloud-init cloud-init-config-etcnet
apt-get install -y cloud-utils-growpart cloud-utils
- после установки пакетов CloudInit необходимо добавить соответствующие службы в автозагрузку
systemctl enable cloud-init-local
systemctl enable cloud-init
systemctl enable cloud-config
systemctl enable cloud-final
Виртуальная машина готова, её необходимо выключить и конвертировать в шаблон.
Подготовка шаблона Альт Рабочая станция и Альт Рабочая станция К
Как и шаблон для сервера, шаблоны виртуальных машин Рабочая станция и Рабочая станция К также подготовлены вручную — конвертированы из соответствующих, предварительно настроенных виртуальных машин.
Виртуальные машины имеют следующие характеристики:
- ОЗУ: 2 Гб
- ЦПУ: 2
- Диск: 32 Гб
- Диск CloudInit
остальные значения устанавливаются по-умолчанию. В качестве ОС используются Альт Рабочая станция 10.1 и Альт Рабочая станция К 10.1 соответственно. При установке операционной системы задаются значения, предлагаемые установщиком.
После установки операционной системы необходимо выполнить обновление и установку дополнительных компонентов:
- включение SSH сервера, т.к. в Рабочей станции он отключен
systemctl enable --now sshd
Следующие шаги идентичны тем, которые выполнялись при настройке сервера:
- обновление пакетов и ядра операционной системы
apt-get update && apt-get dist-upgrade -y && update-kernel -y
- установка дополнительных необязательных пакетов
apt-get install -y qemu-guest-agent mc tmux htop tree
- пакеты для работы CloudInit
apt-get install -y cloud-init cloud-init-config-etcnet
apt-get install -y cloud-utils-growpart cloud-utils
- после установки пакетов CloudInit необходимо добавить соответствующие службы в автозагрузку
systemctl enable cloud-init-local
systemctl enable cloud-init
systemctl enable cloud-config
systemctl enable cloud-final
Виртуальные машины готовы, их необходимо выключить и конвертировать в шаблон.
Разворачивание группировки виртуальных машин
Для автоматизированного развёртывания виртуальных машин на гипервизор PVE используется ansible роль deploy_vms_role.yml
.
Стоит обратить внимание, что при создании виртуальных машин из шаблонов, с помощью механизма CloudInit задаются уникальные IP адреса, имена хостов, а также пароль пользователя root. Кроме этого, также с помощью CloudInit в виртуальные машины копируется ssh ключ. Т.к. на этапе развёртывания CloudInit может взаимодействовать только с файловой системой гипервизора, ssh ключ, который копируется в виртуальные машины, необходимо заранее подготовить и сохранить в файловой системе гипервизора /root/.ssh/
с именем, указанным в переменной key_name
Процесс создания группировки виртуальных машин запускается из директории ansible
с помощью команды:
ansible-playbook 01_deploy_vms_role.yml
В результате выполнения команды в гипервизоре PVE будут созданы 5 виртуальных машин в соответствии со схемой стенда:
dc1
- Основной контроллер доменаdc2
- Резервный контроллерnas
- Файловый серверws
- Клиент, Рабочая станцияkws
- Клиент, Рабочая станция К
Подготовка первого контроллера домена
Для развёртывания первого контроллера домена используется ansible роль - Разворачивание первого контроллера домена.
Запуск выполняется из директории ansible
с помощью команды:
ansible-playbook 02_deploy_dc1_role.yml
В этой роли выполняются 2 задачи: развёртывание контроллера и проверка развёртывания.
Задача развёртывания контроллера разделена на подзадачи (таски):
- Проверка соответствия ОС - таск выполнится при условии запуска на узле с ОС Альт, в противном случае будет выведено соответствующее сообщение и выполнение прервётся;
- Проверка наличия развёрнутого домена на узле - если на узле уже развёрнут контроллер домена, выполнение прервётся;
- Обновление системы - выполняется обновление системы до актуального состояния;
- Назначение корректного имени узла - устанавливается имя узла в соответствии с указанным в переменной в файле
mutable_vars.yml
; - Установка пакетов - выполняется установка пакетов, необходимых для работы контроллера домена. Список пакетов указан в файле
vars.yml
; - Конфигурация NTP - режим работы NTP переключается в значение
server
; - Включение службы синхронизации времени chrony - включается и добавляется в автозагрузку служба
chrony
; - Отключение служб, которые будут конфликтовать с контроллером - для корректной работы
samba
необходимо отключить службы которые будут конфликтовать. Перечень этих служб указан в переменных в файлеvars.yml
; - Удалить старую конфигурацию Samba - удаляется старая конфигурация Samba, если таковая была;
- Создать каталог для хранения групповых политик - создаётся каталог для хранения групповых политик;
- Настройка резолвера на 127.0.0.1 - значение резолвера устанавливается локальный адрес;
- Обновление конфигурации резолвера - выполняется обновление настроек резолвера;
- Разворачивание первого контроллера домена - выполняется непосредственное разворачивание контроллера домена;
- Включение службы
samba
- после развёртывания контроллера, запускается служба; - Копирование конфигурации Kerberos - копируется созданная при развёртывании конфигурация Kerberos.
После развёртывания запускается задача проверки корректности работы контроллера домена. Эта задача, в свою очередь, разеделена на подзадачи:
- Проверка наличия развёрнутого домена на узле - если служба
samba
не работает на контроллере, выполнение задачи будет прервано; - Информация о домене - на экран выводится краткая информация о домене;
- Получение настройки резолвера - выполняется проверка корректности настройки резолвера - указание на самого себя;
- Записи служб DNS. Kerberos - выполняется проверка работы DNS, записи служб Kerberos;
- Записи служб DNS. LDAP - выполняется проверка работы DNS, записи служб LDAP;
- Записи служб DNS. A запись - выполняется проверка работы DNS, наличие основной записи (А) о контроллере;
- Проверка возможности авторизации Kerberos - попытка авторизации на контроллере домена;
- Текущие билеты Kerberos - вывод текущего билета Kerberos после авторизации.
Подготовка второго контроллера домена
Для подготовки второго контроллера домена используются:
- ансибл плэйбук - Добавление DNS записи о втором контроллере на первый
- ансибл роль - Разворачивание второго контроллера домена
- ансибл плэйбук - Репликация между контроллерами
Добавление DNS записи о втором контроллере на первый
В этой задаче выполняются следующие действия:
- Проверка соответствия ОС - задача будет выполнятся только на ОС семейства Альт;
- Добавление DNS записи - на первом контроллере домена в DNS добавляется А запись о втором контроллере домена.
Запуск выполняется из директории ansible
с помощью команды:
ansible-playbook 03_add_dns_record.yml
Разворачивание второго контроллера домена
В роли выполняются следующие задачи:
- Развёртывание второго контроллера домена
- Проверка корректности развёртывания второго контроллера домена.
В этих задачах выполняются аналогичные подзадачи тем, которые выполнялись при развёртывании первого контроллера домена, за исключением указания резолвера. На втором контроллере домена в качестве резолвера указывается адрес первого контроллера.
Запуск выполняется из директории ansible
с помощью команды:
ansible-playbook 04_deploy_dc2_role.yml
Репликация между контроллерами
В задаче выполняются действия:
- Проверка соответствия ОС - задача будет выполнятся только на ОС семейства Альт;
- Проверка наличия развёрнутого домена - если домен не развёрнут, выполнение задачи будет прервано;
- Репликация в направлении контроллер 2 -> контроллер 1 - выполняется репликация в соответствующем направлении;
- Репликация в направлении контроллер 1 -> контроллер 2 - выполняется репликация в соответствующем направлении;
Запуск выполняется из директории ansible
с помощью команды:
ansible-playbook 05_dc_replication.yml
Создание пользователей контроллера домена
Эта задача позволяет создавать или удалять пользователей в домене.
Пользователи, которых необходимо добавить либо удалить из домена указаны в файле переменных samba_users.yml
.
По-умолчанию задача запускается с переменной samba_user_mode: create
, что обеспечивает создание пользователей. Если же необходимо наоборот, удалить пользователей - задачу необходимо запускать со значением переменной samba_user_mode: delete
Запуск выполняется из директории ansible
с помощью команды:
для создания пользователей
ansible-playbook 06_add_samba_users.yml
для удаления пользователей
ansible-playbook -e 'samba_user_mode=delete' 06_add_samba_users.yml
Добавление компьютеров в домен
Следующим этапом необходимо добавить компьютеры в домен. Для этой задачи создан плэйбук 07_add_samba_clients.yml
Плэёбук выполняет следующие действия:
- Проверка того, что узел не является членом домена - если узел уже является членом домена, дальнейшее выполнение прерывается;
- Обновление системы - происходит обновление системы до актуального состояния;
- Назначение корректного имени хоста - устанавливается имя узла в соответствии с указанным в переменной в файле
mutable_vars.yml
; - Настройка резолвера на контроллеры домена - чтобы вводимый узел мог найти доменные службы и подключиться к ним;
- Обновление конфигурации резолвера - для применения изменений настроек резолвера;
- Установка клиентского пакета Samba;
- Ввод в домен;
- Проверка ввода в домен;
- Перезагрузка узла после добавления в домен
Запуск выполняется из директории ansible
с помощью команды:
ansible-playbook 07_add_samba_clients.yml
Разворачивание файлового сервера
В этой роли выполняются задачи: Подготовка узла для развёртывания файлового сервера, Настройка файлового сервера Samba
Подготовка узла для развёртывания файлового сервера:
- Проверка соответствия ОС - таск выполнится при условии запуска на узле с ОС Альт, в противном случае будет выведено соответствующее сообщение и выполнение прервётся;
- Проверка наличия развёрнутого домена на узле - если на узле уже развёрнут контроллер домена, выполнение прервётся;
- Обновление системы - выполняется обновление системы до актуального состояния;
- Назначение корректного имени хоста - устанавливается имя узла в соответствии с указанным в переменной в файле
mutable_vars.yml
; - Настройка резолвера на контроллеры домена - чтобы вводимый узел мог найти доменные службы и подключиться к ним;
- Обновление конфигурации резолвера - для применения изменений настроек резолвера;
- Установка клиентского пакета Samba
- Ввод в домен
- Проверка ввода в домен
- Перезагрузка узла после добавления в домен
Настройка файлового сервера Samba:
- Установка пакета Samba;
- Создание разделяемого ресурса Samba - создание директории и назначение её доменной группе;
- Добавление в конфигурацию Samba данных о разделяемом ресурсе;
- Включение служб файлового сервера Samba
Запуск выполняется из директории ansible
с помощью команды:
ansible-playbook 08_deploy_nas_role.yml
Проверка работы домена
Выполним несколько проверок работоспособности доменной инфраструктуры и отказоустойчивости
Возможность авторизации доменным пользователем на рабочих станциях
Выполним авторизацию на узле ws.alt.lan
- клиентский компьютер с установленной ОС Альт Рабочая станция. В качестве пользователя используем доменную учётную запись, которая была создана ранее - ivanov
. Пароль от учётной записи указан в файле group_vars/samba_users.yml
- P@ssw0rd
Рисунок 3 - Авторизация доменной учётной записью на ws.alt.lan
Авторизация прошла успешно, вывод команды id
подтверждает факт авторизации в домене.
Аналогично выполним вход на узле kws.alt.lan
- Альт Рабочая станция К. Пользователь - petrov
- P@ssw0rd
Рисунок 4 - Авторизация доменной учётной записью на kws.alt.lan
Авторизация также прошла успешно.
Проверка работы DNS и расположения служб домена
На узле ws.alt.lan
разрешим некоторые доменные имена:
cat /etc/resolv.conf
host dc1.alt.lan
host dc2.alt.lan
host nas.alt.lan
Рисунок 5 - Результат проверки DNS
Проверим расположение служб в домене
host -t SRV _kerberos._udp.alt.lan
host -t SRV _ldap._tcp.alt.lan
Рисунок 6 - Результат проверки расположения служб домена в DNS
Проверка работы файлового сервера
Переменные для настройки файлового сервера указаны в файле group_vars/nas/nas_vars.yml
. Разделяемый ресурс на сервере располагается по адресу - /share/sambashare
Проверка выполняется на узле ws.alt.lan
smbclient -L nas.alt.lan
Рисунок 7 - Доступность разделяемого ресурса
Видим, что разделяемый ресурс sambashare
отображается среди доступных пользователю.
С помощью файлового менеджера Caja перейдём по пути smb://nas.alt.lan/sambashare
и создадим текстовый документ ivanov.txt
.
Рисунок 8 - Возможность записи на разделяемый ресурс
Переключимся на файловый сервер и убедимся в том, что мы создали файл на нём, а не локально на рабочей станции.
Рисунок 9 - Созданный документ на файловом сервере
Переключимся на локального пользователя sysadmin
- P@ssw0rd
и проверим доступность сетевых ресурсов
smbclient -L nas.alt.lan
Рисунок 10 - Отсутствие доступа к ресурсу локальной учётной записи
Разделяемая директория видна среди доступных, однако доступа к ней нет, т.к. используется локальная учётная запись.
Проверка отказоустойчивости домена
Для проверки отказоустойчивости выключим контроллер домена dc1.alt.lan
и выполним переавторизацию доменной учётной записью ivanov
- P@ssw0rd
на узле ws.alt.lan
.
Рисунок 11 - Проверка отказоустойчивости домена
Как видим icmp пакеты проходят только ко второму контроллеру dc2.alt.lan
, но это не помешало успешно авторизоваться доменной учётной записью на рабочей станции.
Заключение
В работе рассмотрен процесс развёртывания службы каталогов построенной на решении Samba. Применение службы каталогов позволяет существенно упростить процесс администрирования информационной инфраструктуры предприятия в части управления пользователями и компьютерами. Возможность развёртывания нескольких контроллеров домена позволяет повысить надежность системы и обеспечить непрерывную полноценную работу при условии работоспособности хотя бы одного контроллера домена.
Использование файлового сервера с возможностью доменной авторизации позволяет гибко настроить права и ограничения по использованию резделяемых сетевых ресурсов, что в свою очередь, позволяет повысить эффективность работы.
За счёт поддержки компьютеров с операционными системами Microsoft Windows и Альт, использование решения Samba для реализации службы каталогов позволяет произвести плавный переход на российские решения без существенных изменений в инфраструктурных службах предприятия.
Перечень используемых источников информации
- Документация BaseALT (https://docs.altlinux.org/ru-RU/index.html). Проверено 01.11.2023 г.
- Управление DNS средствами samba-tool (https://www.xinux.net/index.php/Samba-tool_dns). Проверено 01.11.2023 г.
- Документация по модулям Ansible (https://docs.ansible.com/ansible/latest/collections/index_module.html). Проверено 01.11.2023 г.
- Сообщество ALT Linux - Active Directory (https://www.altlinux.org/ActiveDirectory/DC). Проверено 01.11.2023 г.