Установка базового кластера
Устанавливаемые компоненты
| Компонент | Описание |
|---|---|
| Zakroma-Disk | Сервис Закрома.Диск, включая web-интерфейс, dsdrive, WebDAV и сервис блокировок. |
| Nginx | Proxy-сервер для web-интерфейса и WebDAV. |
| Keycloak | Система аутентификации и авторизации. |
| PostgreSQL | СУБД для метаданных Закрома.Диск и Keycloak. |
| Сервер | Компоненты |
|---|---|
plank-1.zakroma.internal | Zakroma-Disk, Nginx |
plank-2.zakroma.internal | Zakroma-Disk, Nginx |
plank-3.zakroma.internal | Zakroma-Disk, Nginx |
postgres.zakroma.internal | PostgreSQL |
keycloak.zakroma.internal | Keycloak |
Установка
1. Распакуйте архив поставки
1tar -xvzf zakroma-roles-2.0.1.tar.gz 2cd zakroma-roles-2.0.1
2. Подготовьте inventory
В качестве основы используйте файл inventories/base-cluster/hosts.
1[certificates] 2plank-1 ansible_host=10.222.0.221 3plank-2 ansible_host=10.222.0.222 4plank-3 ansible_host=10.222.0.223 5 6[zakroma-disk-nginx] 7plank-1 ansible_host=10.222.0.221 8plank-2 ansible_host=10.222.0.222 9plank-3 ansible_host=10.222.0.223 10 11[zakroma-disk] 12plank-1 ansible_host=10.222.0.221 13plank-2 ansible_host=10.222.0.222 14plank-3 ansible_host=10.222.0.223
Если Keycloak устанавливается этой же поставкой, добавьте отдельный хост или один из существующих хостов в группу keycloak:
1[keycloak] 2keycloak ansible_host=10.222.0.224
3. Разложите сертификаты
Отредактируйте inventories/base-cluster/group_vars/certificates.yml: укажите все хосты из inventory и сертификаты для Nginx и Keycloak.
1--- 2certificates_copy_source_path: "files" 3 4host_cert_config: 5 plank-1: 6 certs: 7 - src_dir: "{{ certificates_copy_source_path }}" 8 dest_dir: "/opt/certs/" 9 cert_file: "zakroma.crt" 10 key_file: "zakroma.key" 11 owner: "nginx" 12 group: "nginx" 13 cert_permissions: "0644" 14 key_permissions: "0600" 15 keycloak: 16 certs: 17 - src_dir: "{{ certificates_copy_source_path }}" 18 dest_dir: "/opt/keycloak/" 19 cert_file: "keycloak.crt" 20 key_file: "keycloak.key" 21 owner: "keycloak" 22 group: "keycloak" 23 cert_permissions: "0644" 24 key_permissions: "0600"
Запустите playbook:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-copy-certificates.yml
4. Подготовьте Keycloak
Если используется Keycloak из поставки, настройте inventories/base-cluster/group_vars/keycloak.yml по инструкции Настройка Keycloak и запустите:
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-keycloak.yml 2ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-keycloak-copy-realm.yml
5. Заполните параметры Закрома.Диск
Отредактируйте inventories/base-cluster/group_vars/zakroma-disk.yml.
Минимально проверьте и замените значения:
1zakroma_disk_version: 1.5.1 2 3zakroma_disk_auth: 4 # Включить аутентификацию для микросервисов Закрома.Диск. 5 # Для корректной работы WebDAV значение должно быть true.
Важная информация об аутентификации пользователей
Закрома.Диск поддерживает интеграцию с Keycloak для аутентификации пользователей в Web UI и WebDAV.
Для Web UI может использоваться один из двух режимов:
Authorization Code Flow / redirect flow- пользователь перенаправляется в Keycloak, проходит интерактивную аутентификацию в браузере и возвращается в Web UI Закрома.Диск;direct grant- Закрома.Диск получает токен доступа напрямую от Keycloak без браузерного перенаправления пользователя.
WebDAV использует только режим direct grant. Это связано с тем, что типовые WebDAV-клиенты не поддерживают интерактивный OIDC/OAuth redirect в браузере и не могут выполнить стандартный сценарий входа через Keycloak.
Параметры zakroma_disk_auth.access_key_id и zakroma_disk_auth.access_key обязательны при включенной межсервисной аутентификации Закрома.Диск. Для корректной работы Закрома.Диск с WebDAV задайте zakroma_disk_auth.enabled: true, заполните zakroma_disk_auth.access_key_id и zakroma_disk_auth.access_key, а также не оставляйте эти значения пустыми в продуктивной инсталляции.
Для работы WebDAV необходимо включить Direct Access Grants / direct grant flow в настройках клиента в Keycloak и включить direct grant в конфигурации Закрома.Диск:
1zakroma_disk_dsdrive.auth.direct_grant.enabled: true
Значение zakroma_disk_dsdrive.auth.direct_grant.auth_key должно быть заполнено и совпадать с zakroma_disk_webdav.dsdrive.auth_key.
Для синхронизации пользователей можно использовать два варианта: по ролям Keycloak (user_role) или по группам Keycloak (user_groups). Настройка role-mapper и group-mapper описана в отдельной инструкции по Keycloak для Закрома.Диск.
6. Настройте Nginx
Отредактируйте inventories/base-cluster/group_vars/zakroma-disk-nginx.yml: замените server_name, пути к сертификатам и домены disk.zakroma.internal / webdav.zakroma.internal на значения вашего контура.
TLS для Закрома.Диск настраивается на уровне Nginx. В конфигурации zakroma_disk_dsdrive.storage TLS-параметры Закрома.Диск указывать не требуется.
Пример конфигурации Nginx:
1--- 2# Перезапустить nginx, даже если не было изменений. 3flush_restart_nginx: false 4 5# Название пакета Nginx.
7. Запустите установку
1ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-zakroma-disk.yml 2ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-zakroma-disk-nginx.yml
8. Проверьте стенд после установки
- Откройте
https://disk.zakroma.internalи убедитесь, что загружается интерфейс Закрома.Диск. - Войдите через Keycloak и проверьте, что пользователь попадает в интерфейс без ошибок авторизации.
- Подключитесь к WebDAV по адресу
https://webdav.zakroma.internalи проверьте чтение и запись тестового файла. - На узлах группы
zakroma-diskубедитесь, что сервисыzakroma-disk-*запущены и не уходят в постоянный перезапуск.