From e903d3f9cf1d0dda4a25445a57d2f36112143a38 Mon Sep 17 00:00:00 2001 From: ogrechko Date: Wed, 6 May 2026 08:32:41 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20playbooks/promote=5Fdc.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- playbooks/promote_dc.yml | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 playbooks/promote_dc.yml diff --git a/playbooks/promote_dc.yml b/playbooks/promote_dc.yml new file mode 100644 index 0000000..828941f --- /dev/null +++ b/playbooks/promote_dc.yml @@ -0,0 +1,57 @@ +--- +- name: Setup Windows Server 2025 as Additional Domain Controller + hosts: all + gather_facts: yes + + # В Ansible Semaphore эти переменные лучше передавать через Environment (Extra Variables) + # и использовать защищенные хранилища (Key Store) для паролей! + vars: + domain_name: "example.local" # Имя вашего домена + primary_dc_ip: "192.168.1.10" # IP-адрес текущего контроллера домена (для DNS) + domain_admin_user: "Administrator@example.local" # Учетная запись админа домена + # domain_admin_password: "{{ vault_domain_admin_password }}" + # safe_mode_password: "{{ vault_safe_mode_password }}" # Пароль восстановления DSRM + + tasks: + - name: Set Primary DC as DNS server (Required for Domain Join) + ansible.windows.win_dns_client: + adapter_names: "*" + ipv4_addresses: + - "{{ primary_dc_ip }}" + - "127.0.0.1" + + - name: Install Active Directory Domain Services & Management Tools + ansible.windows.win_feature: + name: AD-Domain-Services + state: present + include_management_tools: yes + register: ad_feature + + - name: Promote server to Additional Domain Controller + microsoft.ad.domain_controller: + domain_name: "{{ domain_name }}" + domain_admin_user: "{{ domain_admin_user }}" + domain_admin_password: "{{ domain_admin_password }}" + safe_mode_password: "{{ safe_mode_password }}" + state: domain_controller + # Указываем, что сервер должен стать дополнительным DC в существующем домене + register: dc_promotion + + - name: Reboot after promotion + ansible.windows.win_reboot: + msg: "Rebooting to apply Domain Controller promotion" + reboot_timeout: 600 + post_reboot_delay: 60 # Даем время на инициализацию служб AD после перезагрузки + when: dc_promotion.reboot_required + + # Active Directory настраивает репликацию автоматически. + # Следующий шаг принудительно инициирует синхронизацию для проверки. + - name: Force Active Directory Replication (SyncAll) + ansible.windows.win_command: repadmin /syncall /A /e /d + register: repadmin_result + changed_when: false + ignore_errors: yes # Игнорируем ошибки, если топология еще не построилась + + - name: Show Replication Status + ansible.builtin.debug: + var: repadmin_result.stdout_lines \ No newline at end of file