--- - name: Разворачивание контроллера домена hosts: dctest2 tasks: - name: Проверка соответствия ОС ansible.builtin.fail: msg: Операционная система должна быть Альт when: ansible_os_family != "Altlinux" - name: Проверка наличия развёрнутого домена на хосте {{ ansible_hostname }} ansible.builtin.shell: "samba-tool domain info {{ ansible_default_ipv4.address }}" register: samba_tool_result ignore_errors: yes - name: Если на хосте развёрнут домен, выполнение прерывается ansible.builtin.fail: msg: На хосте {{ ansible_hostname }} обнаружен развёрнутый домен. Прерываю выполнение when: - samba_tool_result.failed == false - name: Обновление системы apt_rpm: update_cache: true dist_upgrade: true clean: true - name: Назначение корректного имени хоста ansible.builtin.hostname: name: "{{ hostnames.dc2_host }}.{{ dc_details.realm }}" use: systemd - name: Установка пакетов {{ packages }} apt_rpm: package: "{{ item }}" state: present update_cache: yes loop: "{{ packages }}" - name: Конфигурация NTP (режим server) ansible.builtin.command: cmd: control chrony server - name: Настройка синхронизации времени с контроллером домена - {{ dc_details.dc1_ip }} ansible.builtin.lineinfile: path: /etc/resolvconf.conf regexp: '^server .*' line: server {{ dc_details.dc1_ip }} - name: Перезапуск службы синхронизации времени ansible.builtin.systemd: name: "{{ sync_time_daemon }}" enabled: true state: restarted masked: false - name: Отключение служб, которые будут конфликтовать с контроллером ansible.builtin.systemd: name: "{{ item }}" enabled: false state: stopped loop: "{{ stop_daemons }}" ignore_errors: yes - name: Удалить старую конфигурацию Samba ansible.builtin.file: path: "{{ item }}" state: absent force: true loop: "{{ old_config_to_remove }}" - name: Создать каталог для хранения групповых политик ansible.builtin.file: path: "{{ gp_folder }}" state: directory mode: '0755' - name: Настройка резолвера на контроллер домена - {{ dc_details.dc1_ip }} ansible.builtin.lineinfile: path: /etc/resolvconf.conf regexp: '^name_servers' line: name_servers={{ dc_details.dc1_ip }} # - name: Настройка резолвера доменную зону - {{ dc_details.realm }} # ansible.builtin.lineinfile: # path: /etc/resolvconf.conf # regexp: '^search_domains' # line: search_domains={{ dc_details.realm }} - name: Обновление конфигурации резолвера ansible.builtin.shell: "resolvconf -u" - name: Внесение изменений в /etc/krb5.conf - "default_realm = {{ dc_details.realm }}" ansible.builtin.lineinfile: path: /etc/krb5.conf regexp: 'default_realm' line: " default_realm = {{ dc_details.realm }}" - name: Внесение изменений в /etc/krb5.conf - "dns_lookup_realm = false" ansible.builtin.lineinfile: path: /etc/krb5.conf regexp: 'dns_lookup_realm' line: " dns_lookup_realm = false" - name: Внесение изменений в /etc/krb5.conf - "dns_lookup_kdc = true" ansible.builtin.lineinfile: path: /etc/krb5.conf regexp: 'dns_lookup_kdc' line: " dns_lookup_kdc = true" - name: Добавление второго контроллера домена ansible.builtin.shell: | samba-tool domain join {{ dc_details.realm }} DC -Uadministrator --realm={{ dc_details.realm }} \ --option="dns forwarder=77.88.8.8" --option="idmap_ldb:use rfc2307 = yes" --password=P@ssw0rd register: dc2_join_output - ansible.builtin.debug: # samba dc при развёртывании валит вывод во все потоки, в том числе и err var: dc2_join_output.stderr_lines[-1:] # показать последнюю строку вывода - name: Включение службы {{ samba_service }} ansible.builtin.systemd: name: "{{ samba_service }}" enabled: true state: restarted masked: false - name: Копирование конфигурации Kerberos ansible.builtin.copy: remote_src: true src: /var/lib/samba/private/krb5.conf dest: /etc/krb5.conf - name: Настройка резолвера на 127.0.0.1 ansible.builtin.lineinfile: path: /etc/resolvconf.conf regexp: '^name_servers' line: name_servers=127.0.0.1 - name: Обновление конфигурации резолвера ansible.builtin.shell: "resolvconf -u" - name: Перезагрузка узла после добавления в домен ansible.builtin.reboot: reboot_timeout: 3600