Подготовка окружения к установке
1. Отключение SELinux
Убедитесь, что SELinux отключён или переведен в режим Permissive.
2. Проверка и настройка DNS
Создайте DNS A-записи для доменов, которые будут использоваться Закрома.Диск и внешними зависимостями.
Для одноузловой конфигурации и базового кластера:
1disk.zakroma.internal -> хост(ы) с Закрома.Диск и Nginx 2webdav.zakroma.internal -> хост(ы) с Закрома.Диск и Nginx 3keycloak.zakroma.internal -> хост(ы) с Keycloak 4postgres.zakroma.internal -> хост(ы) с PostgreSQL
В инструкции используется пример домена zakroma.internal. Замените его на доменную зону вашей инфраструктуры.
3. Подготовка сертификатов
Подготовьте TLS-сертификаты и ключи для доменов:
1disk.zakroma.internal 2webdav.zakroma.internal 3keycloak.zakroma.internal
В поставке сертификаты копируются Ansible-ролью certificates, а примеры переменных находятся в inventories/<inventory>/group_vars/certificates.yml.
Роль не выполняет генерацию самоподписных сертификатов, а только их распространение. Для промышленных сред используйте корпоративный центр сертификации.
4. Подготовка лицензии
Подготовьте файл лицензии Закрома.Диск и замените примерный файл files/zakroma-licence/licence в распакованном архиве поставки.
Путь, куда лицензия будет скопирована на целевые хосты, задаётся переменной:
1zakroma_disk_dsdrive: 2 path_to_licence: "/opt/zakroma/zakroma-disk/dsdrive/bin/licence"
Копирование выполняется отдельным playbook playbooks/sample-play-copy-licence-file.yml.
5. Подготовка PostgreSQL
Создайте базу данных и схему для Закрома.Диск, а также базу и схему для Keycloak согласно инструкции по настройке PostgreSQL.
6. Подготовка Keycloak
Установите и настройте Keycloak согласно инструкции по настройке Keycloak или используйте существующий Keycloak в вашей инфраструктуре.
После подготовки Keycloak получите значения для переменных Закрома.Диск:
zakroma_disk_dsdrive.auth.keycloak.urlzakroma_disk_dsdrive.auth.keycloak.realmzakroma_disk_dsdrive.auth.keycloak.clientIdzakroma_disk_dsdrive.auth.keycloak.secretzakroma_disk_dsdrive.auth.keycloak.openid_configzakroma_disk_dsdrive.jwt.kidzakroma_disk_dsdrive.jwt.rsa_public_keyzakroma_disk_auth.access_key_idzakroma_disk_auth.access_keyzakroma_disk_dsdrive.auth.direct_grant.auth_keyzakroma_disk_webdav.dsdrive.auth_key
Для поставочного realm роль пользователя в примерах называется clouduser. Если синхронизация выполняется по роли, укажите user_role: "clouduser" и оставьте user_groups: "". Не указывайте имя пользователя администратора как группу: это приводит к ошибке InvalidKeycloakSettings / 404 Not Found: Group path does not exist.
7. Подготовка Закрома.Хранение
Для полноценной работы Закрома.Диск необходима установленная и настроенная конфигурация Закрома.Хранение.
Без Закрома.Хранения не будут работать некоторые функции автоматизации создания бакетов для проектов, а также будет отсутствовать возможность ограничения квот по проектам.
Подготовьте рабочую область, ключ доступа и политику в Закрома.Хранение по инструкции Подготовка хранилища.
Полученные значения укажите в секции zakroma_disk_dsdrive.storage файла inventories/<inventory>/group_vars/zakroma-disk.yml.
8. Подготовка Zakroma Message Broker (ZMB)
Начиная с поставки 2.1.2 для доставки событий безопасности используется Zakroma Message Broker (ZMB) вместо прежнего брокера сообщений Kafka. Роль message_broker версии 1.0.0 входит в архив поставки.
Журнал аудита безопасности фиксирует события системы: обращения к API, действия пользователей и служебные операции. Эти записи затем доступны администратору на странице Лог аудита безопасности. Сервис dsseclog принимает события от dsdrive; ZMB используется как транспорт для их доставки.
ZMB нужен, если вы планируете включать zakroma_disk_dsdrive.seclog_client.zmb и/или zakroma_disk_dsseclog.zmb. Для минимального стенда без журнала аудита ZMB можно не устанавливать и оставить zakroma_disk_dsseclog_enabled: false.
Inventory и переменные
- Добавьте хосты в группу
message-brokerвinventories/<inventory>/hosts. - Отредактируйте
inventories/<inventory>/group_vars/message-broker.yml.
Базовые переменные из поставки:
1# Версия бинарника ZMB в Nexus (semver-тег или ветка+sha, например develop-abc1234) 2zmb_version: "v2.12.8" 3 4# Имя inventory-группы кластера ZMB (должно совпадать с группой в hosts) 5zmb_host_group: "message-broker" 6 7# Базовый URL Nexus для загрузки бинарника 8zmb_repository_base_url: >- 9 https://nexus.digital-spirit.ru/repository/raw-snapshots/zakroma/microservices/zmb/zmb-server 10 11# Логин для доступа к репозиторию Nexus 12zmb_nexus_username: "" 13 14# Пароль для доступа к репозиторию Nexus 15zmb_nexus_password: "" 16 17# Пропускать загрузку, если бинарник уже есть на хосте или в role_path/files 18zmb_check_binary_files: true 19 20# Публичные ключи NKey (U...) для авторизации клиентов. 21# Пример: 22# zmb_authorization_users: 23# - "UDNXCE5M6XJVT2IKPX3TKAEI4Q2IHTHL7BZFBULMR3VGPGT6RRWHGSOK" 24zmb_authorization_users: [] 25 26# Список имён inventory-групп удалённых кластеров; [] — секция gateway не создаётся. 27# Пример (шлюз к удалённому кластеру dc2): 28# zmb_gateway_host_groups: 29# - "message-broker-dc2" 30# zmb_gateway_addresses: 31# message-broker-dc2: zakroma-message-bus-dc2 32zmb_gateway_host_groups: [] 33 34# Адреса gateway удалённых кластеров: { "dc2": "zakroma-message-bus-dc2" } 35zmb_gateway_addresses: {} 36 37# Включить TLS 38zmb_tls_enabled: false 39 40# Путь к TLS-сертификату 41zmb_tls_cert_file: /etc/zakroma-message-bus/tls/node.pem 42 43# Путь к TLS-ключу 44zmb_tls_key_file: /etc/zakroma-message-bus/tls/node.key 45 46# Системный пользователь сервиса 47zmb_service_user: zmb 48 49# Системная группа сервиса 50zmb_service_group: zmb
Заполните zmb_nexus_username и zmb_nexus_password (рекомендуется Ansible Vault). Имя zmb_host_group должно совпадать с именем inventory-группы кластера ZMB.
NKey-авторизация
Если клиенты (dsdrive / dsseclog) подключаются по NKey:
- Сгенерируйте пару ключей:
nk gen user -p. - Публичный ключ (
U...) добавьте вzmb_authorization_usersна стороне брокера. - Seed (
SU...) укажите только на клиентах вzakroma_disk_dsdrive.seclog_client.zmb.auth.seed/zakroma_disk_dsseclog.zmb.auth.seed— на брокер seed не кладётся.
Установка
1cd zakroma-roles-2.1.2 2ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/<inventory>/hosts playbooks/sample-play-message-broker.yml
Playbook импортирует роль message_broker на хосты группы message-broker. После установки на целевых хостах появляются:
| Путь | Назначение |
|---|---|
/opt/zakroma/zmb-server/bin/zmb-<version> | Бинарный файл |
/opt/zakroma/zmb-server/cfg/zmb-server.conf | Конфигурация |
/usr/lib/systemd/system/zmb-server.service | Systemd unit |
/var/lib/zakroma-message-bus/data | Данные message_bus |
Клиентский порт по умолчанию — 4222. Адрес брокера укажите в zakroma_disk_dsdrive.seclog_client.zmb.hosts и zakroma_disk_dsseclog.zmb.hosts в формате host:port.
9. Подготовка для работы с Ansible
- Проверьте SSH-доступ к каждому хосту.
- Убедитесь, что пользователь имеет привилегированный доступ через
sudo. - Установите или обновите Ansible. Рекомендуется использовать версию, совместимую с коллекциями из поставки.
- Если подключение выполняется по логину и паролю, установите пакет
sshpass. - Запускайте
ansible-playbookиз корневой директории распакованного архива, где находятсяansible.cfg,inventories/,playbooks/,roles/иcollections/.
Пример:
1cd zakroma-roles-2.1.2 2ANSIBLE_CONFIG=ansible.cfg ansible-playbook -i inventories/base-cluster/hosts playbooks/sample-play-zakroma-disk.yml
10. Пакет Nginx
На узлах группы zakroma-disk-nginx должен быть доступен пакет nginx из репозиториев операционной системы или корпоративного зеркала.