From 1d4a873efe228e9eb95a172ee3002dee337f4eb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BE=D0=BB=D0=B3=D0=B8=D0=B9=20=D0=90=D1=80=D1=82?= =?UTF-8?q?=D1=91=D0=BC?= Date: Tue, 5 Sep 2023 16:04:31 +0300 Subject: [PATCH] mod --- ansible/00_test.yml | 35 ++++++++++ ansible/01_deploy_vms_role.yml | 2 +- ansible/02_deploy_primary_dc.yml | 17 ++--- ansible/{03_check_dc.yml => 03_check_dc1.yml} | 7 +- ansible/04_add_samba_users.yml | 2 - ansible/05_add_samba_clients.yml | 5 +- ansible/06_1_add_dns_record.yml | 30 ++++++++ ...econd_dc.yml => 06_2_deploy_second_dc.yml} | 70 ++++++++++++------- ansible/07_check_dc2.yml | 58 +++++++++++++++ .../{vars => group_vars/all}/mutable_vars.yml | 8 +++ .../{vars => group_vars/all}/samba_users.yml | 0 ansible/{vars => group_vars/all}/vars.yml | 0 ansible/hosts.ini | 19 ++--- ansible/roles/deploy_vms/vars/main.yml | 8 +-- 14 files changed, 201 insertions(+), 60 deletions(-) create mode 100644 ansible/00_test.yml rename ansible/{03_check_dc.yml => 03_check_dc1.yml} (89%) create mode 100644 ansible/06_1_add_dns_record.yml rename ansible/{06_deploy_second_dc.yml => 06_2_deploy_second_dc.yml} (63%) create mode 100644 ansible/07_check_dc2.yml rename ansible/{vars => group_vars/all}/mutable_vars.yml (57%) rename ansible/{vars => group_vars/all}/samba_users.yml (100%) rename ansible/{vars => group_vars/all}/vars.yml (100%) diff --git a/ansible/00_test.yml b/ansible/00_test.yml new file mode 100644 index 0000000..8613cb7 --- /dev/null +++ b/ansible/00_test.yml @@ -0,0 +1,35 @@ +--- + +- name: Разворачивание контроллера домена + hosts: dctest2 + + tasks: + - 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: Конфигурация NTP + ansible.builtin.command: + cmd: control chrony server + +- name: Включение NTP (режим server) + service: + name: chronyd + state: started + enabled: true \ No newline at end of file diff --git a/ansible/01_deploy_vms_role.yml b/ansible/01_deploy_vms_role.yml index 6aa8956..efeb749 100644 --- a/ansible/01_deploy_vms_role.yml +++ b/ansible/01_deploy_vms_role.yml @@ -1,5 +1,5 @@ --- - name: Используется роль для создания ВМ стенда - hosts: proxmox + hosts: pve roles: - deploy_vms \ No newline at end of file diff --git a/ansible/02_deploy_primary_dc.yml b/ansible/02_deploy_primary_dc.yml index eac3518..0bef943 100644 --- a/ansible/02_deploy_primary_dc.yml +++ b/ansible/02_deploy_primary_dc.yml @@ -2,9 +2,6 @@ - name: Разворачивание контроллера домена hosts: dctest1 - vars_files: - - ./vars/vars.yml - - ./vars/mutable_vars.yml tasks: - name: Проверка соответствия ОС @@ -31,7 +28,7 @@ - name: Назначение корректного имени хоста ansible.builtin.hostname: - name: "{{ inventory_hostname }}.{{ dc_details.realm }}" + name: "{{ hostnames.dc1_host }}.{{ dc_details.realm }}" use: systemd - name: Установка пакетов {{ packages }} @@ -40,12 +37,10 @@ state: present update_cache: yes loop: "{{ packages }}" - - - name: Разрешить подключение клиентов для синхронизации времени - ansible.builtin.lineinfile: - path: /etc/chrony.conf - line: allow all - create: yes + + - name: Конфигурация NTP (режим server) + ansible.builtin.command: + cmd: control chrony server - name: Включение службы синхронизации времени chrony ansible.builtin.systemd: @@ -91,7 +86,7 @@ --option="dns forwarder={{ dc_details.dns_forwarder }}" --server-role=dc --use-rfc2307 register: dc_provision_output - ansible.builtin.debug: - msg: dc_provision_output.stdout_lines + var: dc_provision_output.stdout_lines - name: Включение службы {{ samba_service }} ansible.builtin.systemd: diff --git a/ansible/03_check_dc.yml b/ansible/03_check_dc1.yml similarity index 89% rename from ansible/03_check_dc.yml rename to ansible/03_check_dc1.yml index 1b3eb85..0890dda 100644 --- a/ansible/03_check_dc.yml +++ b/ansible/03_check_dc1.yml @@ -1,10 +1,7 @@ --- -- name: Проверка состояния контроллера домена +- name: Проверка состояния первого контроллера домена hosts: dctest1 - vars_files: - - ./vars/vars.yml - - ./vars/mutable_vars.yml tasks: - name: Проверка наличия развёрнутого домена на хосте {{ ansible_hostname }} @@ -37,7 +34,7 @@ var: srv_ldap.stdout_lines - name: Записи служб DNS. A запись - ansible.builtin.shell: "host {{ ansible_hostname }}.{{ dc_details.realm }}" + ansible.builtin.shell: "host {{ hostnames.dc1_host }}.{{ dc_details.realm }}" register: a_line - name: A запись домена ansible.builtin.debug: diff --git a/ansible/04_add_samba_users.yml b/ansible/04_add_samba_users.yml index a98f0f1..7c534fc 100644 --- a/ansible/04_add_samba_users.yml +++ b/ansible/04_add_samba_users.yml @@ -4,8 +4,6 @@ hosts: dctest1 vars: - samba_user_mode: create - vars_files: - - ./vars/samba_users.yml tasks: - name: Пользователи в домене Samba diff --git a/ansible/05_add_samba_clients.yml b/ansible/05_add_samba_clients.yml index 895d43b..46c5b81 100644 --- a/ansible/05_add_samba_clients.yml +++ b/ansible/05_add_samba_clients.yml @@ -2,9 +2,6 @@ - name: Добавление компьютеров в контроллер hosts: testws - vars_files: - - ./vars/vars.yml - - ./vars/mutable_vars.yml tasks: - name: Проверка того, что узел не является членом домена @@ -62,6 +59,6 @@ register: testjoin failed_when: testjoin.rc != 0 - - name: Перезагрузка узла после добваления в домен + - name: Перезагрузка узла после добавления в домен ansible.builtin.reboot: reboot_timeout: 3600 diff --git a/ansible/06_1_add_dns_record.yml b/ansible/06_1_add_dns_record.yml new file mode 100644 index 0000000..1f0c64f --- /dev/null +++ b/ansible/06_1_add_dns_record.yml @@ -0,0 +1,30 @@ +--- + +- name: Добавление DNS записи о втором контроллере на первом + hosts: dctest1 + + 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: Добавление DNS записи + ansible.builtin.shell: | + samba-tool dns add {{ dc_details.dc1_ip }} {{ dc_details.realm }} \ + {{ hostnames.dc2_host }} A {{ dc_details.dc2_ip }} \ + -U{{ dc_details.admin }} --password={{ dc_details.adminpass }} + register: dc_dns_record + - ansible.builtin.debug: + var: dc_dns_record.stdout_lines diff --git a/ansible/06_deploy_second_dc.yml b/ansible/06_2_deploy_second_dc.yml similarity index 63% rename from ansible/06_deploy_second_dc.yml rename to ansible/06_2_deploy_second_dc.yml index fa767b6..ba009ee 100644 --- a/ansible/06_deploy_second_dc.yml +++ b/ansible/06_2_deploy_second_dc.yml @@ -2,9 +2,6 @@ - name: Разворачивание контроллера домена hosts: dctest2 - vars_files: - - ./vars/vars.yml - - ./vars/mutable_vars.yml tasks: - name: Проверка соответствия ОС @@ -31,7 +28,7 @@ - name: Назначение корректного имени хоста ansible.builtin.hostname: - name: "{{ inventory_hostname }}.{{ dc_details.realm }}" + name: "{{ hostnames.dc2_host }}.{{ dc_details.realm }}" use: systemd - name: Установка пакетов {{ packages }} @@ -41,17 +38,15 @@ update_cache: yes loop: "{{ packages }}" - - name: Разрешить подключение клиентов для синхронизации времени - ansible.builtin.lineinfile: - path: /etc/chrony.conf - line: allow all - create: yes + - name: Конфигурация NTP (режим server) + ansible.builtin.command: + cmd: control chrony server - - name: Настройка синхронизации времени с контроллером домена - {{ dc_details.dc_ip }} + - name: Настройка синхронизации времени с контроллером домена - {{ dc_details.dc1_ip }} ansible.builtin.lineinfile: path: /etc/resolvconf.conf regexp: '^server .*' - line: server {{ dc_details.dc_ip }} + line: server {{ dc_details.dc1_ip }} - name: Перезапуск службы синхронизации времени ansible.builtin.systemd: @@ -81,35 +76,47 @@ state: directory mode: '0755' - - name: Настройка резолвера на контроллер домена - {{ dc_details.dc_ip }} + - name: Настройка резолвера на контроллер домена - {{ dc_details.dc1_ip }} ansible.builtin.lineinfile: path: /etc/resolvconf.conf regexp: '^name_servers' - line: name_servers={{ dc_details.dc_ip }} + 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 }} - - ################################################################################################ - - # !!! Как обратится к первому контроллеру,чтобы добавить в DNS запись о втором контроллере? !!!! - - ################################################################################################ - name: Обновление конфигурации резолвера ansible.builtin.shell: "resolvconf -u" - - name: Разворачивание первого контроллера домена + - 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 provision --realm={{ dc_details.realm }} --domain={{ dc_details.domain }} \ - --adminpass='{{ dc_details.adminpass }}' --dns-backend=SAMBA_INTERNAL \ - --option="dns forwarder={{ dc_details.dns_forwarder }}" --server-role=dc --use-rfc2307 - register: dc_provision_output + 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: - msg: dc_provision_output.stdout_lines + # samba dc при развёртывании валит вывод во все потоки, в том числе и err + var: dc2_join_output.stderr_lines[-1:] # показать последнюю строку вывода - name: Включение службы {{ samba_service }} ansible.builtin.systemd: @@ -123,3 +130,16 @@ 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 diff --git a/ansible/07_check_dc2.yml b/ansible/07_check_dc2.yml new file mode 100644 index 0000000..c589c9c --- /dev/null +++ b/ansible/07_check_dc2.yml @@ -0,0 +1,58 @@ +--- + +- name: Проверка состояния второго контроллера домена + hosts: dctest2 + + tasks: + - name: Проверка наличия развёрнутого домена на хосте {{ ansible_hostname }} + ansible.builtin.shell: "samba-tool domain info {{ ansible_default_ipv4.address }}" + register: samba_tool_result + + - name: Информация о домене + ansible.builtin.debug: + var: samba_tool_result.stdout_lines + + - name: Получение настройки резолвера + ansible.builtin.shell: "cat /etc/resolv.conf" + register: resolv_conf_result + - name: Вывод /etc/resolv.conf + ansible.builtin.debug: + var: resolv_conf_result.stdout_lines + + - name: Записи служб DNS. Kerberos + ansible.builtin.shell: "host -t SRV _kerberos._udp.{{ dc_details.realm }}" + register: srv_kerberos + - name: SRV запись Kerberos + ansible.builtin.debug: + var: srv_kerberos.stdout_lines + + - name: Записи служб DNS. LDAP + ansible.builtin.shell: "host -t SRV _ldap._tcp.{{ dc_details.realm }}" + register: srv_ldap + - name: SRV запись LDAP + ansible.builtin.debug: + var: srv_ldap.stdout_lines + + - name: Записи служб DNS. A запись + ansible.builtin.shell: "host {{ hostnames.dc2_host }}.{{ dc_details.realm }}" + register: a_line + - name: A запись домена + ansible.builtin.debug: + var: a_line.stdout_lines + + - name: Проверка возможности авторизации Kerberos + ansible.builtin.expect: + command: "kinit {{ dc_details.admin }}" + responses: + # "Password for {{ dc_details.admin }}@{{ dc_details.realm_u }}:": "{{ dc_details.adminpass }}" + "Password for .*:": "{{ dc_details.adminpass }}" + echo: true + timeout: 5 + no_log: true + + - name: Текущие билеты Kerberos + ansible.builtin.shell: "klist" + register: klist + - name: Вывод билета Kerberos + ansible.builtin.debug: + var: klist.stdout_lines diff --git a/ansible/vars/mutable_vars.yml b/ansible/group_vars/all/mutable_vars.yml similarity index 57% rename from ansible/vars/mutable_vars.yml rename to ansible/group_vars/all/mutable_vars.yml index 25820fd..d5f6a89 100644 --- a/ansible/vars/mutable_vars.yml +++ b/ansible/group_vars/all/mutable_vars.yml @@ -1,3 +1,11 @@ +hostnames: + dc1_host: dc1 + dc2_host: dc2 + nas_host: nas + cl1_host: ws + cl2_host: kws + + dc_details: dc1_ip: 192.168.13.139 dc2_ip: 192.168.13.155 diff --git a/ansible/vars/samba_users.yml b/ansible/group_vars/all/samba_users.yml similarity index 100% rename from ansible/vars/samba_users.yml rename to ansible/group_vars/all/samba_users.yml diff --git a/ansible/vars/vars.yml b/ansible/group_vars/all/vars.yml similarity index 100% rename from ansible/vars/vars.yml rename to ansible/group_vars/all/vars.yml diff --git a/ansible/hosts.ini b/ansible/hosts.ini index cf7914d..736b1b3 100644 --- a/ansible/hosts.ini +++ b/ansible/hosts.ini @@ -1,17 +1,20 @@ [proxmox] -pve ansible_host=10.1.1.10 ansible_user=root +pve ansible_host=10.1.1.10 [dc] -alts1 ansible_host=10.1.1.11 ansible_user=root -alts2 ansible_host=10.1.1.12 ansible_user=root +dc1 ansible_host=10.1.1.11 +dc2 ansible_host=10.1.1.12 [nas] -alts3 ansible_host=10.1.1.13 ansible_user=root +"{{ hostnames.nas_host }}" ansible_host=10.1.1.13 [test] -dctest1 ansible_host=192.168.13.139 ansible_user=root -dctest2 ansible_host=192.168.13.155 ansible_user=root +dctest1 ansible_host=192.168.13.139 +dctest2 ansible_host=192.168.13.155 [testws] -altws ansible_host=192.168.13.152 ansible_user=root -altkws ansible_host=192.168.13.153 ansible_user=root +"{{ hostnames.cl1_host }}" ansible_host=192.168.13.152 +"{{ hostnames.cl2_host }}" ansible_host=192.168.13.153 + +[all:vars] +ansible_user=root diff --git a/ansible/roles/deploy_vms/vars/main.yml b/ansible/roles/deploy_vms/vars/main.yml index a0f02ac..326f6f4 100644 --- a/ansible/roles/deploy_vms/vars/main.yml +++ b/ansible/roles/deploy_vms/vars/main.yml @@ -2,7 +2,7 @@ server_vms: alts1: - name: alts1.alt.lan + name: dc1.alt.lan ip: 10.1.1.11/24 gw: 10.1.1.9 dns: 77.88.8.8 @@ -11,7 +11,7 @@ server_vms: sockets: 1 memory: 2048 alts2: - name: alts2.alt.lan + name: dc2.alt.lan ip: 10.1.1.12/24 gw: 10.1.1.9 dns: 77.88.8.8 @@ -20,7 +20,7 @@ server_vms: sockets: 1 memory: 2048 alts3: - name: alts3.alt.lan + name: nas.alt.lan ip: 10.1.1.13/24 gw: 10.1.1.9 dns: 77.88.8.8 @@ -47,4 +47,4 @@ ws_vms: vmid: 205 cores: 2 sockets: 1 - memory: 2048 \ No newline at end of file + memory: 2048