Установка базового кластера

Устанавливаемые компоненты

КомпонентОписание
Zakroma-DiskСервис Закрома.Диск, включая web-интерфейс, dsdrive, WebDAV и сервис блокировок.
NginxProxy-сервер для web-интерфейса и WebDAV.
KeycloakСистема аутентификации и авторизации.
PostgreSQLСУБД для метаданных Закрома.Диск и Keycloak.
СерверКомпоненты
plank-1.zakroma.internalZakroma-Disk, Nginx
plank-2.zakroma.internalZakroma-Disk, Nginx
plank-3.zakroma.internalZakroma-Disk, Nginx
postgres.zakroma.internalPostgreSQL
keycloak.zakroma.internalKeycloak

Установка

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.
Развернутьarrow

Важная информация об аутентификации пользователей

Закрома.Диск поддерживает интеграцию с 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.
Развернутьarrow

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. Проверьте стенд после установки

  1. Откройте https://disk.zakroma.internal и убедитесь, что загружается интерфейс Закрома.Диск.
  2. Войдите через Keycloak и проверьте, что пользователь попадает в интерфейс без ошибок авторизации.
  3. Подключитесь к WebDAV по адресу https://webdav.zakroma.internal и проверьте чтение и запись тестового файла.
  4. На узлах группы zakroma-disk убедитесь, что сервисы zakroma-disk-* запущены и не уходят в постоянный перезапуск.