add roles
parent
4acf5a7122
commit
7b892cbeb2
|
@ -1,35 +1,12 @@
|
|||
---
|
||||
|
||||
- name: Разворачивание контроллера домена
|
||||
hosts: dctest2
|
||||
hosts: nastest
|
||||
|
||||
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
|
||||
- name: Создание разделяемого ресурса Samba
|
||||
ansible.builtin.file:
|
||||
path: /share/sambashare
|
||||
state: directory
|
||||
mode: '0770'
|
||||
group: "{{ smb_share_grp }}"
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
|
||||
- name: Разворачивание первого контроллера домена
|
||||
hosts: dctest1
|
||||
roles:
|
||||
- deploy_dc1
|
|
@ -1,102 +0,0 @@
|
|||
---
|
||||
|
||||
- name: Разворачивание контроллера домена
|
||||
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: Обновление системы
|
||||
apt_rpm:
|
||||
update_cache: true
|
||||
dist_upgrade: true
|
||||
clean: true
|
||||
|
||||
- name: Назначение корректного имени хоста
|
||||
ansible.builtin.hostname:
|
||||
name: "{{ hostnames.dc1_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: Включение службы синхронизации времени chrony
|
||||
ansible.builtin.systemd:
|
||||
name: chronyd
|
||||
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: Настройка резолвера на 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.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
|
||||
- ansible.builtin.debug:
|
||||
var: dc_provision_output.stdout_lines
|
||||
|
||||
- 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
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
|
||||
- name: Добавление DNS записи о втором контроллере на первом
|
||||
- name: Добавление DNS записи о втором контроллере на первый
|
||||
hosts: dctest1
|
||||
|
||||
tasks:
|
||||
|
@ -12,14 +12,14 @@
|
|||
- name: Проверка наличия развёрнутого домена на хосте {{ ansible_hostname }}
|
||||
ansible.builtin.shell: "samba-tool domain info {{ ansible_default_ipv4.address }}"
|
||||
register: samba_tool_result
|
||||
ignore_errors: yes
|
||||
ignore_errors: true
|
||||
|
||||
- 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 }} \
|
|
@ -1,58 +0,0 @@
|
|||
---
|
||||
|
||||
- name: Проверка состояния первого контроллера домена
|
||||
hosts: dctest1
|
||||
|
||||
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.dc1_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
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
|
||||
- name: Разворачивание второго контроллера домена
|
||||
hosts: dctest2
|
||||
roles:
|
||||
- deploy_dc2
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
|
||||
- name: Репликация между контроллерами домена
|
||||
- name: Репликация между контроллерами
|
||||
hosts: dctest1
|
||||
|
||||
tasks:
|
||||
|
@ -12,7 +12,7 @@
|
|||
- name: Проверка наличия развёрнутого домена на хосте {{ ansible_hostname }}
|
||||
ansible.builtin.shell: "samba-tool domain info {{ ansible_default_ipv4.address }}"
|
||||
register: samba_tool_result
|
||||
ignore_errors: yes
|
||||
ignore_errors: true
|
||||
|
||||
- name: Если на хосте НЕ развёрнут домен, выполнение прерывается
|
||||
ansible.builtin.fail:
|
||||
|
@ -30,7 +30,7 @@
|
|||
register: rep1_output
|
||||
- ansible.builtin.debug:
|
||||
msg: "Итог репликации: {{ rep1_output.stdout }}"
|
||||
|
||||
|
||||
- name: Репликация в направлении {{ hostnames.dc1_host }} -> {{ hostnames.dc2_host }}
|
||||
ansible.builtin.shell: |
|
||||
samba-tool drs replicate \
|
|
@ -1,145 +0,0 @@
|
|||
---
|
||||
|
||||
- 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
|
|
@ -3,7 +3,7 @@
|
|||
- name: Создание пользователей контроллера домена
|
||||
hosts: dctest1
|
||||
vars:
|
||||
- samba_user_mode: create
|
||||
- samba_user_mode: create # или 'delete'
|
||||
|
||||
tasks:
|
||||
- name: Пользователи в домене Samba
|
||||
|
@ -21,9 +21,18 @@
|
|||
--gecos='{{ item.fname }} {{ item.sname }}' \
|
||||
--given-name={{ item.fname }} --surname={{ item.sname }}
|
||||
loop: "{{ samba_users }}"
|
||||
when: (not item.username in user_list.stdout_lines) and (samba_user_mode != 'delete')
|
||||
when: (not item.username in user_list.stdout_lines) and (samba_user_mode == 'create')
|
||||
no_log: true
|
||||
|
||||
register: add_users
|
||||
|
||||
- name: Отключается срок действия пароля пользователей
|
||||
ansible.builtin.command: |
|
||||
samba-tool user setexpiry \
|
||||
{{ item.username }} --noexpiry
|
||||
loop: "{{ samba_users }}"
|
||||
when: add_users.changed
|
||||
no_log: true
|
||||
|
||||
- name: Удаляются пользователи домена
|
||||
ansible.builtin.command: samba-tool user {{ samba_user_mode }} {{ item.username }}
|
||||
loop: "{{ samba_users }}"
|
||||
|
@ -35,4 +44,10 @@
|
|||
msg: "{{ status.results[1].stderr_lines }}"
|
||||
when: samba_user_mode == 'delete'
|
||||
|
||||
- name: Пользователи в домене Samba
|
||||
ansible.builtin.command: samba-tool user list
|
||||
register: user_list
|
||||
- name: Список пользователей
|
||||
ansible.builtin.debug:
|
||||
var: user_list.stdout_lines
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
|
||||
- name: Добавление компьютеров в контроллер
|
||||
- name: Добавление компьютеров в домен
|
||||
hosts: testws
|
||||
|
||||
tasks:
|
|
@ -1,58 +0,0 @@
|
|||
---
|
||||
|
||||
- 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
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
|
||||
- name: Разворачивание второго контроллера домена
|
||||
hosts: nastest
|
||||
roles:
|
||||
- deploy_nas
|
|
@ -1,36 +0,0 @@
|
|||
---
|
||||
|
||||
- name: Настройка файлового сервера
|
||||
hosts: nas
|
||||
|
||||
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.dc1_host }}.{{ dc_details.realm }}"
|
||||
use: systemd
|
||||
|
||||
###################
|
||||
https://www.altlinux.org/Samba/Fileserver/AD-auth
|
||||
###################
|
|
@ -0,0 +1,11 @@
|
|||
# Переменные для настройки файлового сервера
|
||||
|
||||
nas_samba_pkg: samba
|
||||
|
||||
nas_samba_service:
|
||||
- smb
|
||||
- nmb
|
||||
|
||||
smb_share: /share/sambashare
|
||||
smb_share_grp: "domain users"
|
||||
smb_conf_file: /etc/samba/smb.conf
|
|
@ -0,0 +1,10 @@
|
|||
[sambashare]
|
||||
comment = Общая директория Samba
|
||||
path = /share/sambashare
|
||||
writable = yes
|
||||
browseable = yes
|
||||
guest ok = no
|
||||
write list = @"ALT\domain users"
|
||||
force group = "ALT\domain users"
|
||||
force create mode = 0666
|
||||
force directory mode = 0775
|
|
@ -12,6 +12,9 @@ dc2 ansible_host=10.1.1.12
|
|||
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
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
language: python
|
||||
python: "2.7"
|
||||
|
||||
# Use the new container infrastructure
|
||||
sudo: false
|
||||
|
||||
# Install ansible
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- python-pip
|
||||
|
||||
install:
|
||||
# Install ansible
|
||||
- pip install ansible
|
||||
|
||||
# Check ansible version
|
||||
- ansible --version
|
||||
|
||||
# Create ansible.cfg with correct roles_path
|
||||
- printf '[defaults]\nroles_path=../' >ansible.cfg
|
||||
|
||||
script:
|
||||
# Basic role syntax check
|
||||
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
|
||||
|
||||
notifications:
|
||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
|
@ -0,0 +1,25 @@
|
|||
Deploy DC1
|
||||
=========
|
||||
|
||||
Роль разворачивает контроллер домена Samba DC.
|
||||
|
||||
Требования
|
||||
------------
|
||||
|
||||
Поддерживается исключительно ОС Альт.
|
||||
Работоспособность проверена на Альт Сервер 10.1 x86-64.
|
||||
|
||||
Переменные
|
||||
--------------
|
||||
|
||||
Все переменные вынесены за пределы роли и расположены во внешней директории `group_vars`
|
||||
|
||||
Лицензия
|
||||
-------
|
||||
|
||||
BSD
|
||||
|
||||
Автор
|
||||
------------------
|
||||
|
||||
Артём Долгий, [artem@da2001.ru](mailto:artem@da2001.ru)
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# defaults file for deploy_primary_dc
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# handlers file for deploy_primary_dc
|
|
@ -0,0 +1,53 @@
|
|||
galaxy_info:
|
||||
author: your name
|
||||
description: your role description
|
||||
company: your company (optional)
|
||||
|
||||
# If the issue tracker for your role is not on github, uncomment the
|
||||
# next line and provide a value
|
||||
# issue_tracker_url: http://example.com/issue/tracker
|
||||
|
||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||
# - BSD-3-Clause (default)
|
||||
# - MIT
|
||||
# - GPL-2.0-or-later
|
||||
# - GPL-3.0-only
|
||||
# - Apache-2.0
|
||||
# - CC-BY-4.0
|
||||
license: license (GPL-2.0-or-later, MIT, etc)
|
||||
|
||||
min_ansible_version: 2.9
|
||||
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
# platforms:
|
||||
# - name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
---
|
||||
|
||||
- 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.dc1_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
|
|
@ -0,0 +1,98 @@
|
|||
---
|
||||
|
||||
- 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: true
|
||||
|
||||
- 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.dc1_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: Включение службы синхронизации времени chrony
|
||||
ansible.builtin.systemd:
|
||||
name: chronyd
|
||||
enabled: true
|
||||
state: restarted
|
||||
masked: false
|
||||
|
||||
- name: Отключение служб, которые будут конфликтовать с контроллером
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ item }}"
|
||||
enabled: false
|
||||
state: stopped
|
||||
loop: "{{ stop_daemons }}"
|
||||
ignore_errors: true
|
||||
|
||||
- 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: Настройка резолвера на 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.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
|
||||
- ansible.builtin.debug:
|
||||
var: dc_provision_output.stdout_lines
|
||||
|
||||
- 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
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
|
||||
- name: Создание первого контроллера домена
|
||||
import_tasks: deploy_dc1.yml
|
||||
|
||||
- name: Проверка первого контроллера
|
||||
import_tasks: check_dc1.yml
|
|
@ -0,0 +1,2 @@
|
|||
localhost
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- deploy_primary_dc
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# vars file for deploy_primary_dc
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
language: python
|
||||
python: "2.7"
|
||||
|
||||
# Use the new container infrastructure
|
||||
sudo: false
|
||||
|
||||
# Install ansible
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- python-pip
|
||||
|
||||
install:
|
||||
# Install ansible
|
||||
- pip install ansible
|
||||
|
||||
# Check ansible version
|
||||
- ansible --version
|
||||
|
||||
# Create ansible.cfg with correct roles_path
|
||||
- printf '[defaults]\nroles_path=../' >ansible.cfg
|
||||
|
||||
script:
|
||||
# Basic role syntax check
|
||||
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
|
||||
|
||||
notifications:
|
||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
|
@ -0,0 +1,30 @@
|
|||
Deploy DC1
|
||||
=========
|
||||
|
||||
Роль разворачивает контроллер домена Samba DC.
|
||||
|
||||
Требования
|
||||
------------
|
||||
|
||||
Поддерживается исключительно ОС Альт.
|
||||
Работоспособность проверена на Альт Сервер 10.1 x86-64.
|
||||
|
||||
Переменные
|
||||
--------------
|
||||
|
||||
Все переменные вынесены за пределы роли и расположены во внешней директории `group_vars`
|
||||
|
||||
Зависимости
|
||||
------------
|
||||
|
||||
Роль необходимо выполнять после запуска роли `deploy_dc1`
|
||||
|
||||
Лицензия
|
||||
-------
|
||||
|
||||
BSD
|
||||
|
||||
Автор
|
||||
------------------
|
||||
|
||||
Артём Долгий, [artem@da2001.ru](mailto:artem@da2001.ru)
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# defaults file for deploy_dc2
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# handlers file for deploy_dc2
|
|
@ -0,0 +1,53 @@
|
|||
galaxy_info:
|
||||
author: your name
|
||||
description: your role description
|
||||
company: your company (optional)
|
||||
|
||||
# If the issue tracker for your role is not on github, uncomment the
|
||||
# next line and provide a value
|
||||
# issue_tracker_url: http://example.com/issue/tracker
|
||||
|
||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||
# - BSD-3-Clause (default)
|
||||
# - MIT
|
||||
# - GPL-2.0-or-later
|
||||
# - GPL-3.0-only
|
||||
# - Apache-2.0
|
||||
# - CC-BY-4.0
|
||||
license: license (GPL-2.0-or-later, MIT, etc)
|
||||
|
||||
min_ansible_version: 2.9
|
||||
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
# platforms:
|
||||
# - name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
---
|
||||
|
||||
- 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
|
|
@ -0,0 +1,141 @@
|
|||
---
|
||||
|
||||
- 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: true
|
||||
|
||||
- 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: true
|
||||
|
||||
- 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
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
|
||||
- name: Создание второго контроллера
|
||||
import_tasks: deploy_second_dc.yml
|
||||
|
||||
- name: Проверка второго контроллера
|
||||
import_tasks: check_dc2.yml
|
|
@ -0,0 +1,2 @@
|
|||
localhost
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- deploy_dc2
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# vars file for deploy_dc2
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
language: python
|
||||
python: "2.7"
|
||||
|
||||
# Use the new container infrastructure
|
||||
sudo: false
|
||||
|
||||
# Install ansible
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- python-pip
|
||||
|
||||
install:
|
||||
# Install ansible
|
||||
- pip install ansible
|
||||
|
||||
# Check ansible version
|
||||
- ansible --version
|
||||
|
||||
# Create ansible.cfg with correct roles_path
|
||||
- printf '[defaults]\nroles_path=../' >ansible.cfg
|
||||
|
||||
script:
|
||||
# Basic role syntax check
|
||||
- ansible-playbook tests/test.yml -i tests/inventory --syntax-check
|
||||
|
||||
notifications:
|
||||
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
|
@ -0,0 +1,38 @@
|
|||
Role Name
|
||||
=========
|
||||
|
||||
A brief description of the role goes here.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
|
||||
|
||||
- hosts: servers
|
||||
roles:
|
||||
- { role: username.rolename, x: 42 }
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
BSD
|
||||
|
||||
Author Information
|
||||
------------------
|
||||
|
||||
An optional section for the role authors to include contact information, or a website (HTML is not allowed).
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# defaults file for deploy_nas
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# handlers file for deploy_nas
|
|
@ -0,0 +1,53 @@
|
|||
galaxy_info:
|
||||
author: your name
|
||||
description: your role description
|
||||
company: your company (optional)
|
||||
|
||||
# If the issue tracker for your role is not on github, uncomment the
|
||||
# next line and provide a value
|
||||
# issue_tracker_url: http://example.com/issue/tracker
|
||||
|
||||
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||
# - BSD-3-Clause (default)
|
||||
# - MIT
|
||||
# - GPL-2.0-or-later
|
||||
# - GPL-3.0-only
|
||||
# - Apache-2.0
|
||||
# - CC-BY-4.0
|
||||
license: license (GPL-2.0-or-later, MIT, etc)
|
||||
|
||||
min_ansible_version: 2.9
|
||||
|
||||
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||
# min_ansible_container_version:
|
||||
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
# platforms:
|
||||
# - name: Fedora
|
||||
# versions:
|
||||
# - all
|
||||
# - 25
|
||||
# - name: SomePlatform
|
||||
# versions:
|
||||
# - all
|
||||
# - 1.0
|
||||
# - 7
|
||||
# - 99.99
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
|
||||
- name: Подготовка узла для развёртывания файлового сервера
|
||||
import_tasks: nas_prepare.yml
|
||||
|
||||
- name: Настройка файлового сервера Samba
|
||||
import_tasks: nas_smb.yml
|
|
@ -0,0 +1,67 @@
|
|||
---
|
||||
|
||||
- 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: true
|
||||
|
||||
- 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.nas_host }}.{{ dc_details.realm }}"
|
||||
use: systemd
|
||||
|
||||
- name: Настройка резолвера на контроллеры домена - {{ dc_details.dc1_ip }}, {{ dc_details.dc2_ip }}
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/resolvconf.conf
|
||||
regexp: '^name_servers'
|
||||
line: name_servers="{{ dc_details.dc1_ip }} {{ dc_details.dc2_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: Установка клиентского пакета Samba {{ samba_client_package }}
|
||||
apt_rpm:
|
||||
package: "{{ samba_client_package }}"
|
||||
state: present
|
||||
update_cache: yes
|
||||
|
||||
- name: Ввод в домен
|
||||
ansible.builtin.shell: |
|
||||
system-auth write ad {{ dc_details.realm }} {{ inventory_hostname }} {{ dc_details.domain }} \
|
||||
'{{ dc_details.admin }}' '{{ dc_details.adminpass }}'
|
||||
register: add_to_domain
|
||||
- name: Итог ввода
|
||||
ansible.builtin.debug:
|
||||
var: add_to_domain.stdout_lines
|
||||
|
||||
- name: Проверка ввода в домен
|
||||
ansible.builtin.shell: net ads testjoin
|
||||
register: testjoin
|
||||
failed_when: testjoin.rc != 0
|
||||
|
||||
- name: Перезагрузка узла после добавления в домен
|
||||
ansible.builtin.reboot:
|
||||
reboot_timeout: 3600
|
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
|
||||
- name: Установка пакета {{ nas_samba_pkg }}
|
||||
apt_rpm:
|
||||
package: "{{ nas_samba_pkg }}"
|
||||
state: present
|
||||
update_cache: yes
|
||||
|
||||
- name: Создание разделяемого ресурса Samba
|
||||
ansible.builtin.file:
|
||||
path: "{{ smb_share }}"
|
||||
state: directory
|
||||
mode: '0770'
|
||||
group: "{{ smb_share_grp }}"
|
||||
|
||||
- name: Добавление в конфигурацию Samba данных о разделяемом ресурсе
|
||||
ansible.builtin.blockinfile:
|
||||
block: "{{ lookup('ansible.builtin.file', '../../group_vars/nas/share.conf') }}"
|
||||
path: "{{ smb_conf_file }}"
|
||||
backup: yes
|
||||
|
||||
- name: Включение служб файлового сервера Samba
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ item }}"
|
||||
enabled: true
|
||||
state: restarted
|
||||
masked: false
|
||||
loop: "{{ nas_samba_service }}"
|
|
@ -0,0 +1,2 @@
|
|||
localhost
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- deploy_nas
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# vars file for deploy_nas
|
|
@ -1,38 +1,19 @@
|
|||
Role Name
|
||||
Deploy VMs
|
||||
=========
|
||||
|
||||
A brief description of the role goes here.
|
||||
Роль создаёт виртуальные машины из заранее подготовленных шаблонов.
|
||||
|
||||
Requirements
|
||||
Требования
|
||||
------------
|
||||
|
||||
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
|
||||
Поддерживается гипервизор на основе Proxmox VE (Альт Виртуализация).
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
|
||||
|
||||
- hosts: servers
|
||||
roles:
|
||||
- { role: username.rolename, x: 42 }
|
||||
|
||||
License
|
||||
Лицензия
|
||||
-------
|
||||
|
||||
BSD
|
||||
|
||||
Author Information
|
||||
Автор
|
||||
------------------
|
||||
|
||||
An optional section for the role authors to include contact information, or a website (HTML is not allowed).
|
||||
Артём Долгий, [artem@da2001.ru](mailto:artem@da2001.ru)
|
||||
|
|
Loading…
Reference in New Issue