diff --git a/ansible/02_deploy_dc1_role.yml b/ansible/02_deploy_dc1_role.yml index 66baa91..9ee6fae 100644 --- a/ansible/02_deploy_dc1_role.yml +++ b/ansible/02_deploy_dc1_role.yml @@ -1,6 +1,6 @@ --- - name: Разворачивание первого контроллера домена - hosts: dctest1 + hosts: dc1 roles: - deploy_dc1 diff --git a/ansible/03_add_dns_record.yml b/ansible/03_add_dns_record.yml index cf62e6f..32fcb78 100644 --- a/ansible/03_add_dns_record.yml +++ b/ansible/03_add_dns_record.yml @@ -1,7 +1,7 @@ --- - name: Добавление DNS записи о втором контроллере на первый - hosts: dctest1 + hosts: dc1 tasks: - name: Проверка соответствия ОС diff --git a/ansible/04_deploy_dc2_role.yml b/ansible/04_deploy_dc2_role.yml index fbee4ed..04e96ef 100644 --- a/ansible/04_deploy_dc2_role.yml +++ b/ansible/04_deploy_dc2_role.yml @@ -1,6 +1,6 @@ --- - name: Разворачивание второго контроллера домена - hosts: dctest2 + hosts: dc2 roles: - deploy_dc2 diff --git a/ansible/05_dc_replication.yml b/ansible/05_dc_replication.yml index d6ae233..57d347d 100644 --- a/ansible/05_dc_replication.yml +++ b/ansible/05_dc_replication.yml @@ -1,7 +1,7 @@ --- - name: Репликация между контроллерами - hosts: dctest1 + hosts: dc1 tasks: - name: Проверка соответствия ОС diff --git a/ansible/06_add_samba_users.yml b/ansible/06_add_samba_users.yml index 36c8f5f..b871ede 100644 --- a/ansible/06_add_samba_users.yml +++ b/ansible/06_add_samba_users.yml @@ -1,7 +1,7 @@ --- - name: Создание пользователей контроллера домена - hosts: dctest1 + hosts: dc1 vars: - samba_user_mode: create # или 'delete' diff --git a/ansible/07_add_samba_clients.yml b/ansible/07_add_samba_clients.yml index b871b49..559d233 100644 --- a/ansible/07_add_samba_clients.yml +++ b/ansible/07_add_samba_clients.yml @@ -1,7 +1,7 @@ --- - name: Добавление компьютеров в домен - hosts: testws + hosts: ws tasks: - name: Проверка того, что узел не является членом домена diff --git a/ansible/hosts.ini b/ansible/hosts.ini index d674cf5..0f2d1e2 100644 --- a/ansible/hosts.ini +++ b/ansible/hosts.ini @@ -8,16 +8,9 @@ dc2 ansible_host=10.1.1.12 [nas] "{{ hostnames.nas_host }}" ansible_host=10.1.1.13 -[test] -dctest1 ansible_host=192.168.13.139 -dctest2 ansible_host=192.168.13.155 - -[nastest] -"{{ hostnames.nas_host }}" ansible_host=192.168.13.166 - -[testws] -"{{ hostnames.cl1_host }}" ansible_host=192.168.13.152 -"{{ hostnames.cl2_host }}" ansible_host=192.168.13.153 +[ws] +"{{ hostnames.cl1_host }}" ansible_host=10.1.1.14 +"{{ hostnames.cl2_host }}" ansible_host=10.1.1.15 [all:vars] ansible_user=root diff --git a/ansible/roles/deploy_dc1/tasks/check_dc1.yml b/ansible/roles/deploy_dc1/tasks/check_dc1.yml index ac531ef..f9cd15c 100644 --- a/ansible/roles/deploy_dc1/tasks/check_dc1.yml +++ b/ansible/roles/deploy_dc1/tasks/check_dc1.yml @@ -1,6 +1,6 @@ --- -- name: Проверка наличия развёрнутого домена на хосте {{ ansible_hostname }} +- name: Проверка наличия развёрнутого домена на узле {{ ansible_hostname }} ansible.builtin.shell: "samba-tool domain info {{ ansible_default_ipv4.address }}" register: samba_tool_result diff --git a/ansible/roles/deploy_dc1/tasks/deploy_dc1.yml b/ansible/roles/deploy_dc1/tasks/deploy_dc1.yml index 1d48127..5053055 100644 --- a/ansible/roles/deploy_dc1/tasks/deploy_dc1.yml +++ b/ansible/roles/deploy_dc1/tasks/deploy_dc1.yml @@ -5,12 +5,12 @@ msg: Операционная система должна быть Альт when: ansible_os_family != "Altlinux" -- name: Проверка наличия развёрнутого домена на хосте {{ ansible_hostname }} +- name: Проверка наличия развёрнутого домена на узле {{ ansible_hostname }} ansible.builtin.shell: "samba-tool domain info {{ ansible_default_ipv4.address }}" register: samba_tool_result ignore_errors: true -- name: Если на хосте развёрнут домен, выполнение прерывается +- name: Если на узле развёрнут домен, выполнение прерывается ansible.builtin.fail: msg: На хосте {{ ansible_hostname }} обнаружен развёрнутый домен. Прерываю выполнение when: @@ -22,7 +22,7 @@ dist_upgrade: true clean: true -- name: Назначение корректного имени хоста +- name: Назначение корректного имени узла ansible.builtin.hostname: name: "{{ hostnames.dc1_host }}.{{ dc_details.realm }}" use: systemd diff --git a/readme.md b/readme.md index 30d3619..fd599a6 100644 --- a/readme.md +++ b/readme.md @@ -23,6 +23,11 @@ - [Подготовка шаблона Альт Сервер](#подготовка-шаблона-альт-сервер) - [Подготовка шаблона Альт Рабочая станция и Альт Рабочая станция К](#подготовка-шаблона-альт-рабочая-станция-и-альт-рабочая-станция-к) - [Разворачивание группировки виртуальных машин](#разворачивание-группировки-виртуальных-машин) + - [Подготовка первого контроллера домена](#подготовка-первого-контроллера-домена) + - [Подготовка второго контроллера домена](#подготовка-второго-контроллера-домена) + - [Добавление DNS записи о втором контроллере на первый](#добавление-dns-записи-о-втором-контроллере-на-первый) + - [Разворачивание второго контроллера домена](#разворачивание-второго-контроллера-домена) + - [Репликация между контроллерами](#репликация-между-контроллерами) ### Описание стенда @@ -157,7 +162,7 @@ systemctl enable cloud-final Процесс создания группировки виртуальных машин запускается из директории `ansible` с помощью команды: ```bash -ansible-playbook deploy_vms_role.yml +ansible-playbook 01_deploy_vms_role.yml ``` В результате выполнения команды в гипервизоре PVE будут созданы 5 виртуальных машин в соответствии со схемой стенда: @@ -168,3 +173,94 @@ ansible-playbook deploy_vms_role.yml 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 +```