267 lines
20 KiB
Markdown
267 lines
20 KiB
Markdown
# Выпускная квалификационная работа по курсу "Системное и сетевое администрирование ОС Альт"
|
||
|
||
## Тема: Автоматизация развертывания служб каталога Active Directory
|
||
|
||
Разворачивается следующая конфигурация:
|
||
|
||
* Основной контроллер домена (Альт Сервер)
|
||
* Резервный контроллер домена (Альт Сервер)
|
||
* Файловый сервер (Альт Сервер) в составе домена (службы NFS и SMB)
|
||
* Клиентский узел 1 (Альт Рабочая станция)
|
||
* Клиентский узел 2 (Альт Рабочая станция К).
|
||
|
||
Тестируются: определение расположения служб домена, создание доменного пользователя, получение билета средствами Kerberos, доступность NFS и SMB- служб сервера при kerberos-аутентификации, успешное проведение репликации между контроллерами. Графический вход доменных пользователей на клиентские узлы.
|
||
Эмулируется сбой одного из контроллеров, проверяется работоспособность окружения с оставшимся контроллером.
|
||
Возможно успешность применения групповых политик (включение/выключение определенной службы, убедиться что служба выключилась)
|
||
|
||
***
|
||
|
||
- [Выпускная квалификационная работа по курсу "Системное и сетевое администрирование ОС Альт"](#выпускная-квалификационная-работа-по-курсу-системное-и-сетевое-администрирование-ос-альт)
|
||
- [Тема: Автоматизация развертывания служб каталога Active Directory](#тема-автоматизация-развертывания-служб-каталога-active-directory)
|
||
- [Описание стенда](#описание-стенда)
|
||
- [Предварительная настройка](#предварительная-настройка)
|
||
- [Подготовка шаблона Альт Сервер](#подготовка-шаблона-альт-сервер)
|
||
- [Подготовка шаблона Альт Рабочая станция и Альт Рабочая станция К](#подготовка-шаблона-альт-рабочая-станция-и-альт-рабочая-станция-к)
|
||
- [Разворачивание группировки виртуальных машин](#разворачивание-группировки-виртуальных-машин)
|
||
- [Подготовка первого контроллера домена](#подготовка-первого-контроллера-домена)
|
||
- [Подготовка второго контроллера домена](#подготовка-второго-контроллера-домена)
|
||
- [Добавление DNS записи о втором контроллере на первый](#добавление-dns-записи-о-втором-контроллере-на-первый)
|
||
- [Разворачивание второго контроллера домена](#разворачивание-второго-контроллера-домена)
|
||
- [Репликация между контроллерами](#репликация-между-контроллерами)
|
||
|
||
### Описание стенда
|
||
|
||
В основе стенда используется узел с установленной системой Альт Сервер виртуализации 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 командой
|
||
|
||
```bash
|
||
ansible-galaxy collection install community.general
|
||
```
|
||
|
||
### Подготовка шаблона Альт Сервер
|
||
|
||
Шаблон будет подготовлен вручную — конвертирован из виртуальной машины, которая будет предварительно настроена.
|
||
|
||
Виртуальная машина имеет следующие характеристики:
|
||
|
||
* ОЗУ: 2 Гб
|
||
* ЦПУ: 2
|
||
* Диск: 32 Гб
|
||
* Диск CloudInit
|
||
|
||
остальные значения устанавливаются по-умолчанию. В качестве ОС используется Альт Сервер 10.1. При установке ОС используется профиль `Минимальная установка` с отмеченным пунктом `NetworkManager`, т. к. он необходим для работы CloudInit.
|
||
|
||

|
||
|
||
Рисунок 2 - Выбор компонентов ОС
|
||
|
||
После установки операционной системы необходимо выполнить обновление и установку дополнительных компонентов:
|
||
|
||
* обновление пакетов и ядра операционной системы
|
||
|
||
```bash
|
||
apt-get update && apt-get dist-upgrade -y && update-kernel -y
|
||
```
|
||
|
||
* установка дополнительных необязательных пакетов
|
||
|
||
```bash
|
||
apt-get install -y qemu-guest-agent mc tmux htop tree
|
||
```
|
||
|
||
* пакеты для работы CloudInit
|
||
|
||
```bash
|
||
apt-get install -y cloud-init cloud-init-config-etcnet
|
||
apt-get install -y cloud-utils-growpart cloud-utils
|
||
```
|
||
|
||
* после установки пакетов CloudInit необходимо добавить соответствующие службы в автозагрузку
|
||
|
||
```bash
|
||
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 сервера, т.к. в Рабочей станции он отключен
|
||
|
||
```bash
|
||
systemctl enable --now sshd
|
||
```
|
||
|
||
Следующие шаги идентичны тем, которые выполнялись при настройке сервера:
|
||
|
||
* обновление пакетов и ядра операционной системы
|
||
|
||
```bash
|
||
apt-get update && apt-get dist-upgrade -y && update-kernel -y
|
||
```
|
||
|
||
* установка дополнительных необязательных пакетов
|
||
|
||
```bash
|
||
apt-get install -y qemu-guest-agent mc tmux htop tree
|
||
```
|
||
|
||
* пакеты для работы CloudInit
|
||
|
||
```bash
|
||
apt-get install -y cloud-init cloud-init-config-etcnet
|
||
apt-get install -y cloud-utils-growpart cloud-utils
|
||
```
|
||
|
||
* после установки пакетов CloudInit необходимо добавить соответствующие службы в автозагрузку
|
||
|
||
```bash
|
||
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` с помощью команды:
|
||
|
||
```bash
|
||
ansible-playbook 01_deploy_vms_role.yml
|
||
```
|
||
|
||
В результате выполнения команды в гипервизоре PVE будут созданы 5 виртуальных машин в соответствии со схемой стенда:
|
||
|
||
1. `alts1` - Основной контроллер домена
|
||
2. `alts2` - Резервный контроллер
|
||
3. `alts3` - Файловый сервер
|
||
4. `ws` - Клиент, Рабочая станция
|
||
5. `kws` - Клиент, Рабочая станция К
|
||
|
||
### Подготовка первого контроллера домена
|
||
|
||
Для развёртывания первого контроллера домена используется ansible роль - Разворачивание первого контроллера домена.
|
||
|
||
Запуск выполняется из директории `ansible` с помощью команды:
|
||
|
||
```bash
|
||
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` с помощью команды:
|
||
|
||
```bash
|
||
ansible-playbook 03_add_dns_record.yml
|
||
```
|
||
|
||
#### Разворачивание второго контроллера домена
|
||
|
||
В роли выполняются следующие задачи:
|
||
|
||
* Развёртывание второго контроллера домена
|
||
* Проверка корректности развёртывания второго контроллера домена.
|
||
|
||
В этих задачах выполняются аналогичные подзадачи тем, которые выполнялись при развёртывании первого контроллера домена, за исключением указания резолвера. На втором контроллере домена в качестве резолвера указывается адрес первого контроллера.
|
||
|
||
Запуск выполняется из директории `ansible` с помощью команды:
|
||
|
||
```bash
|
||
ansible-playbook 04_deploy_dc2_role.yml
|
||
```
|
||
|
||
#### Репликация между контроллерами
|
||
|
||
В задаче выполняются действия:
|
||
|
||
* **Проверка соответствия ОС** - задача будет выполнятся только на ОС семейства Альт;
|
||
* **Проверка наличия развёрнутого домена** - если домен не развёрнут, выполнение задачи будет прервано;
|
||
* **Репликация в направлении контроллер 2 -> контроллер 1** - выполняется репликация в соответствующем направлении;
|
||
* **Репликация в направлении контроллер 1 -> контроллер 2** - выполняется репликация в соответствующем направлении;
|
||
|
||
Запуск выполняется из директории `ansible` с помощью команды:
|
||
|
||
```bash
|
||
ansible-playbook 05_dc_replication.yml
|
||
```
|