Argus¶
В данном разделе приведены сведения о Argus, плагине для СУБД Picodata.
Picodata Enterprise
Функциональность плагина доступна только в коммерческой версии Picodata.
Общие сведения¶
Плагин Argus используется для синхронизации учётных данных между сервером LDAP/LDAPS и Picodata. Синхронизация происходит однонаправленно и позволяет импортировать данные пользователей и групп с сервера LDAP в Picodata, для которой перед этим была настроена авторизация с помощью LDAP/LDAPS.
Начиная с версии 3.0.0, синхронизацию в кластере выполняет только один инстанс — текущий raft-лидер. На остальных инстансах, где установлен сервис плагина, он находится в спящем режиме: не подключается к серверу LDAP и не выполняет синхронизацию. При смене raft-лидера прежний лидер останавливает синхронизацию, а новый — её запускает. Во время сбоев в кластере синхронизацию могут кратковременно выполнять несколько инстансов одновременно; в штатном состоянии кластера она всегда выполняется на одном инстансе.
Внимание!
В версиях Argus до 3.0.0 синхронизация выполнялась на мастер-репликах всех репликасетов, в которых был установлен сервис плагина.
Соответствие версий Picodata и Argus¶
Для разных версий плагина Argus требуются определённые версии Picodata. Ниже приведена таблица совместимости:
| Argus | Picodata | ФСТЭК-сертификат |
|---|---|---|
| 2.1.2 | 25.2.2 | |
| 2.2.5 | 25.5.7 (25.5.*) | |
| 2.3.1 | 26.1.* | |
| 3.0.0 | 26.2.* |
См. также:
Состав плагина¶
Внутри архива с плагином находится структура вложенных директорий, включающая имя и версию плагина, а также его файлы:
└── argus
└── 3.0.0
├── libargus.so
└── manifest.yaml
Основная логика плагина обеспечивается разделяемой библиотекой
libargus.so. Исходная конфигурация плагина задаётся в файле манифеста
(manifest.yaml).
Предварительные настройки в Picodata¶
Перед использованием плагина Argus убедитесь, что на стороне Picodata:
- созданы роли (соответствующие группам пользователей в каталоге LDAP), и ролям выданы нужные привилегии
- настроено подключение к серверу LDAP
Подключение плагина¶
Содержимое архива с плагином следует распаковать в любую удобную
директорию, которую после этого нужно будет указать как SHARE_DIR для
инстанса Picodata.
При запуске одного инстанса из командной строки директорию плагина можно указать с помощью параметра:
picodata run --share-dir=<SHARE-DIR> ...
Однако для полноценного использования плагина рекомендуется запускать кластер с помощью роли Ansible.
После запуска Picodata с поддержкой плагинов в заданной директории подключитесь к административной консоли инстанса Picodata.
Установите плагин, добавьте его сервис в тир и затем включите плагин с помощью следующих SQL-команд:
CREATE PLUGIN argus 3.0.0;
ALTER PLUGIN argus 3.0.0 ADD SERVICE argus TO TIER default;
ALTER PLUGIN argus 3.0.0 ENABLE;
Сервис плагина следует добавлять только в тиры, инстансы которых
участвуют в голосовании на выборах raft-лидера, то есть в тиры с
параметром can_vote, равным true. Если в кластере используется
отдельный тир-арбитр, рекомендуется добавлять сервис в него.
Внимание!
При запуске сервис плагина проверяет значение can_vote своего тира
в системной таблице _pico_tier. Если сервис добавлен в тир с
can_vote: false, его запуск завершится ошибкой и включение плагина
будет отменено во всём кластере.
Примечание
После запуска плагин Argus выполняет синхронизацию только на raft-лидере кластера. На остальных инстансах сервис плагина находится в спящем режиме.
Для диагностики работы плагина обратитесь к отладочному журналу инстанса Picodata.
Проверка с помощью Ansible¶
Подготовка¶
- Изучите документацию по развёртыванию кластера Picodata. Выполните инструкции по установке роли.
- Скачайте нужную версию плагина
argusи положите пакет в рабочую директорию. - Проверьте наличие конфигурационного файла для плагина
argus_config.ymlи настройки в нём.
Примечание
На сервере, с которого будет происходить установка, необходим Ansible и доступ на серверы кластера с повышением привилегий.
Установка окружения¶
Создайте файл с описанием кластера согласно руководству по развёртыванию кластера. Ниже приведён пример для четырёх серверов, расположенных в трёх группах (DC1, DC2 и DC3). Группа — отдельный домен отказа.
all:
vars:
ansible_user: vagrant # пользователь для SSH-доступа к серверам
repo: 'https://download.picodata.io' # репозиторий, откуда инсталлировать пакет picodata
cluster_name: 'demo' # имя кластера
admin_password: '123asdZXV' # пароль пользователя admin
default_bucket_count: 23100 # количество бакетов в каждом тире (по умолчанию 30000)
audit: false # отключение аудита
log_level: 'info' # уровень отладки
log_to: 'file' # вывод журналов в файлы, а не в journald
conf_dir: '/etc/picodata' # директория для хранения конфигурационных файлов
data_dir: '/var/lib/picodata' # директория для хранения данных
run_dir: '/var/run/picodata' # директория для хранения sock-файлов
log_dir: '/var/log/picodata' # директория для журналов и файлов аудита
share_dir: '/usr/share/picodata' # директория для хранения служебных данных (плагинов)
listen_address: '{{ ansible_fqdn }}' # адрес прослушивания инстанса. Для IP укажите {{ansible_default_ipv4.address}}
pg_address: '{{ listen_address }}' # адрес, по которому инстанс будет принимать подключения по PostgreSQL-протоколу
first_bin_port: 13301 # начальный бинарный порт для первого инстанса
first_http_port: 18001 # начальный http-порт для первого инстанса для веб-интерфейса
first_pg_port: 15001 # начальный номер порта для PostgreSQL-протокола инстансов кластера
tiers: # описание тиров
arbiter: # имя тира
replicaset_count: 1 # количество репликасетов
replication_factor: 1 # фактор репликации
config:
memtx:
memory: 64M # количество памяти, выделяемое каждому инстансу тира
host_groups:
- ARBITERS # целевая группа серверов для установки инстанса
default: # имя тира
replicaset_count: 3 # количество репликасетов
replication_factor: 3 # фактор репликации
bucket_count: 16384 # количество бакетов в тире
config:
memtx:
memory: 71M # количество памяти, выделяемое каждому инстансу тира
host_groups:
- STORAGES # целевая группа серверов для установки инстанса
db_config: # параметры конфигурации кластера https://docs.picodata.io/picodata/stable/reference/db_config/
governor_auto_offline_timeout: 30
iproto_net_msg_max: 500
memtx_checkpoint_count: 1
memtx_checkpoint_interval: 7200
plugins:
argus: # плагин
path: '../plugins/argus_3.0.0.tar.gz' # путь до пакета плагина
config: '../plugins/argus_config.yml' # путь до файла с настройками плагина
services:
argus:
tiers: # список тиров, в которые устанавливается сервис плагина. Только тиры с can_vote: true
- default # по умолчанию — default
GROUP1: # Группа серверов (failure_domain)
hosts: # серверы в группе
server-1-1: # имя сервера в инвентарном файле
ansible_host: '192.168.19.21' # IP-адрес или fqdn если не совпадает с предыдущей строкой
host_group: 'STORAGES' # определение целевой группы серверов для установки инстансов
server-1-2: # имя сервера в инвентарном файле
ansible_host: '192.168.19.22' # IP-адрес или fqdn если не совпадает с предыдущей строкой
host_group: 'ARBITERS' # определение целевой группы серверов для установки инстансов
GROUP2: # Группа серверов (failure_domain)
hosts: # серверы в группе
server-2-1: # имя сервера в инвентарном файле
ansible_host: '192.168.20.21' # IP-адрес или fqdn если не совпадает с предыдущей строкой
host_group: 'STORAGES' # определение целевой группы серверов для установки инстансов
GROUP3: # Группа серверов (failure_domain)
hosts: # серверы в группе
server-3-1: # имя сервера в инвентарном файле
ansible_host: '192.168.21.21' # IP-адрес или fqdn если не совпадает с предыдущей строкой
host_group: 'STORAGES' # определение целевой группы серверов для установки инстансов
Создайте файл с конфигурацией. Пример:
argus:
interval_secs: 60 # Как часто опрашивать LDAP для синхронизации пользователей и ролей. Значение в секундах
ldap: # Настройки подключения к LDAP:
bind_dn: "cn=admin,dc=example,dc=org" # Учётная запись, под которой Argus будет подключаться к LDAP-серверу
bind_password: "admin" # Пароль этого пользователя
url: "ldap://localhost:389" # Ссылка на LDAP-сервер
disabled_attr: "employeeType" # Название атрибута, который используется для отключения, но не удаления пользователей. Если значение этого атрибута для пользователя равно `true`, Argus отключит его и в Picodata
tries: 1 # Число попыток подключения к LDAP-серверу. Для небольших интервалов рекомендуем оставить `1`
searches: # Поисковые запросы и их соответствие ролям:
- role: "reader" # Название роли в Picodata, которая синхронизируется данным запросом
base: "dc=example,dc=org" # База поиска (объект вашего LDAP-каталога, с которого начнётся поиск)
filter: "(&(objectClass=inetOrgPerson)(businessCategory=reader))" # Фильтр для поиска
attr: "cn" # Атрибут, в котором находится имя пользователя, которое будет использоваться в Picodata
Подготовьте плейбук:
---
- name: Deploy Picodata cluster
hosts: all
become: true
tasks:
- name: Import picodata-ansible role
ansible.builtin.import_role:
name: picodata-ansible
В результате в рабочей директории должно быть 4 файла:
- argus.yml
- picodata.yml
- argus_config.yml
- argus_xxxxx.tar.gz
Запустите развёртывание Argus:
ansible-playbook -i argus.yml picodata.yml
См. также:
Журнал изменений¶
3.0.0 - 2026-10-07¶
Новая функциональность¶
- Ограничены инстансы, на которых работает Argus
Исправления¶
- Улучшено выключение файбера при disable/enable
- Pike обновлён до 5.7.0
Зависимости¶
- Обновлены зависимости и Picodata до 26.2.1
- Обновлены зависимости и Picodata до 26.1.6
Прочее¶
- Пайплайн унифицирован с остальными плагинами
- Добавили регулярную проверку зависимостей
- Перенесены наработки по CI из Radix
- Ограничиваем список ОС для джобы deploy-certified-build
Lint¶
- Исправлены предупреждения 1.97
2.3.1 - 2026-05-22¶
Зависимости¶
- Picodata обновлена до 26.1.3
2.3.0 - 2026-04-01¶
Новая функциональность¶
добавлена проверка SBOM-метаданных
Тестирование¶
- Исправлено условие проверки в тесте
Зависимости¶
- Обновлена Picodata до 26.1.1
Прочее¶
- Заводим тесты на всех поддерживаемых ОС
- Исправлено название команды
pico-stop - Добавлена возможность запуска deploy-certified-build для ручных пайплайнов
- Добавлен сбор артефактов с джобы
sbom-checker - Проверка SBOM встроена в gitlab
добавлены метаданные для sbom-checker
- Добавлена генерация SBOM-файлов
обновим все зависимости перед сертификацией
- Fix sonarqube job do not use old gamayun token
- Fix branch name for sonarqube report download
Build¶
- Добавлена debian:trixie
- Убрана сборка ubuntu focal, эта ОС больше нами не поддерживается
переменные окружения для сборки вынесены в файл .env
2.2.5 - 2026-02-17¶
Прочее¶
- Добавлено ожидание полной проверки sonarqube'ом
Build¶
- 📦 добавлена поддержка alt:p11, пропущенная ранее
2.2.4 - 2026-02-16¶
Исправления¶
- 🔒 обновлена библиотека bytes
Внутренние улучшения¶
- Линты разбиты на отдельные
удалён неиспользуемый параметр, переименован тест
Прочее¶
- Add pack-sources and deploy-certified-build jobs
- Исправлены ошибки в условиях запуска джобов
make заменён на just
- Replace gamayun with sonarqube
- Обновлены заголовки лицензий
Build¶
- 📦 добавлена поддержка fedora:43, alt:p11 и osnova onyx:3
- 📦 удалена поддержка fedora:41 в связи с её EOL
Lint¶
- Добавлен конфиг для
cargo audit - Добавлен конфиг для
cargo deny
2.2.3 - 2025-12-29¶
Исправления¶
обновил механизм определения пути плагина
Документация¶
обновлена документация о процессе разработки
Зависимости¶
- Обновил пикодату до 25.5.2
2.2.2 - 2025-10-14¶
Внутренние улучшения¶
poetry deps fix
Зависимости¶
- Picodata 25.4.2
Прочее¶
- Добавим тег docker бендеру
2.2.1 - 2025-09-29¶
Исправления¶
убраны проверки имён пользователей в Argus
Прочее¶
- Улучшен вывод сообщения о релизе в Телеграм
2.2.0 - 2025-09-11¶
Новая функциональность¶
- Use psycopg to login via LDAP
Исправления¶
- Разрешим использовать однобуквенные имена
исправим обработку имён пользователей
Тестирование¶
получаем версию плагина из пикодаты во время тестов
Зависимости¶
- Picodata 25.3.4
Прочее¶
- Remove PIKE_DATA_DIR from build
2.1.4 - 2025-08-18¶
Прочее¶
- Bump picodata to 25.3.2
- Add ldaps testing
2.1.3 - 2025-07-30¶
Документация¶
- Исправим ссылку на настройку LDAP
Внутренние улучшения¶
- ⬆️ обновляю picodata-plugin до 25.3.1
Тестирование¶
наши тестовые образы содержат только Python 3.11
Прочее¶
- Добавил проверку копирайтов в заголовках файлов
- Добавил лицензию и копирайты
2.1.2 - 2025-06-25¶
Внутренние улучшения¶
запускаю cargo update для обновления версии tokio
обновляю picodata-plugin до 25.2.2
Прочее¶
- Останавливаем кластер перед выключением тестов
- Удалим локальный docker-compose из гамаюна из-за false positive
Build¶
разрешаю ставить плагин в неправильную версию пикодаты
2.1.1 - 2025-06-23¶
Прочее¶
- Передаём предыдущую версию в Гамаюн.
поправим некоторые замечания Гамаюна
- Внедряю Гамаюн, как и в Radix
2.1.0 - 2025-06-04¶
Новая функциональность¶
- Теперь Argus работает только на мастерах
closes #17, обновляю picodata plugin до 25.2.1
Исправления¶
- Заполняем версию в тикет в кору
Документация¶
- Closes #14, переношу документацию пользовательскую в docs/user
Внутренние улучшения¶
поправлю замечания linter'а
Структура кода¶
- Добавляю питоновую типизацию
2.0.3 - 2025-05-06¶
Исправления¶
- 🐛 исправим экранировку
2.0.2 - 2025-05-06¶
Исправления¶
исправим многострочный скрипт, пропущено "\"
2.0.1 - 2025-05-06¶
Прочее¶
добавим создание тикетов по факту релиза
- Move bender to MarkdownV2
web.1.0.0.4.g486a5ae - 2025-04-30¶
Документация¶
написал инструкцию для пользователя и для программиста
Прочее¶
перенесём все зависимости в базовый образ
- Deploy packages to PDG repo (EE)
Build¶
- Move to picodata 25.1 and pike
1.0.0 - 2024-12-28¶
Новая функциональность¶
- Make it plugin
- Ci-cd
- Add enable disable functionality
- Add roles to users
- Add username validation
- Add staff for demo
- Add dockerfiles and readme
- Add ldap-picodata sync
Исправления¶
исправлен запрос проверки, отключён юзер или нет
не пытаемся синхронизировать pico_service
Документация¶
- Add docs
Внутренние улучшения¶
- Удалим отдельный cbus_endpoint.
- Remove old tests
добавил логов и убрал лишние кавычки из запросов
переписано на plugin sdk, исправлены явные паники
Тестирование¶
вернули полный тест сьют, поправили баги
написал два простых теста на подключение к пикодате
обновил зависимости
добавили пользователей в тестовый контейнер
подготовим почву для написания тестов
добавим заглушку для тестов
Прочее¶
picodata, screen & ldap
добавим direnv layout для питоновых тестов
ссылаемся на релизный СДК плагинов пикодаты
используем новую версию CI
- Up rust version
- Up rust version
- Fix docker image
Build¶
зачистим .dockerignore
будем держать cargo.lock в репе