Перейти к содержанию

Argus

В данном разделе приведены сведения о Argus, плагине для СУБД Picodata.

Picodata Enterprise

Функциональность плагина доступна только в коммерческой версии Picodata.

Общие сведения

Плагин Argus используется для синхронизации учетных данных между сервером LDAP и Picodata. Синхронизация происходит однонаправленно и позволяет импортировать данные пользователей и групп с сервера LDAP в Picodata, для которой перед этим была настроена авторизация с помощью LDAP.

Состав плагина

Внутри архива с плагином находится структура вложенных директорий, включающая имя и версию плагина, а также его файлы:

└── argus
    └── 1.0.0
        ├── libargus.so
        ├── manifest.yaml
        └── migrations

Основная логика плагина обеспечивается разделяемой библиотекой libargus.so. Исходная конфигурация плагина задается в файле манифеста (manifest.yaml). Директория migrations зарезервирована для файлов миграций.

Предварительные настройки в Picodata

Перед использованием плагина Argus убедитесь, что на стороне Picodata:

  • созданы роли (соответствующие группам пользователей в каталоге LDAP), и ролям выданы нужные привилегии
  • настроено подключение к серверу LDAP

Подключение плагина

Содержимое архива с плагином следует распаковать в любую удобную директорию, которую после этого нужно будет указать как PLUGIN_DIR для инстанса Picodata.

При запуске одного инстанса из командной строки директорию плагина можно указать с помощью параметра:

picodata run --plugin-dir=<PLUGIN-DIR> ...

Однако, для полноценной использования плагина рекомендуется запустить кластер с помощью роли Ansible.

После запуска Picodata с поддержкой плагинов в заданной директории подключитесь к административной консоли инстанса Picodata.

Установите плагин, добавьте его к тиру и включите его с помощью следующих SQL-команд:

CREATE PLUGIN argus 1.0.0;
ALTER PLUGIN argus 1.0.0 ADD SERVICE argus TO TIER default;
ALTER PLUGIN argus 1.0.0 ENABLE;

Для диагностики работы плагина обратитесь к отладочному журналу инстанса Picodata.

Проверка с помощью Ansible

Подготовка

  1. Изучите документацию по развертыванию кластера Picodata. Выполнить инструкции по установке роли.
  2. Скачайте нужную версию плагина argus и положите пакет в рабочую директорию.
  3. Проверьте наличие конфигурационного файла для плагина argus-config.yml, проверьте настройки в нем (см. ниже).

Примечание

На сервере, с которого будет происходить установка, необходим Ansible и доступ на серверы кластера с повышением привилегий.

Установка окружения

Создайте файл с описанием кластера согласно руководству по развертыванию кластера. Например, argus.yml.

---
all:
  vars:
    user: username # имя пользователя, под которым будут запущены процессы picodata
    group: groupname # группа пользователя, под которой будут запущены процессы picodata
    password: "<password>"
    cluster_name: argus
    audit: false
    log_level: warn
    log_to: file

    conf_dir: "/opt/picodata/etc"
    data_dir: "/opt/picodata/data"
    run_dir: "/var/run/picodata"
    log_dir: "/opt/picodata/logs"

    fd_uniq_per_instance: true

    purge: true # при очистке кластера удалять в том числе все данные и логи с сервера

    listen_ip: "{{ ansible_default_ipv4.address }}" # ip-адрес, который будет слушать инстанс, по умолчанию ansible_default_ipv4.address

    first_bin_port: 13301 # начальный бинарный порт для первого инстанса (он же main_peer)
    first_http_port: 18001
    first_pg_port: 15001

    init_system: "supervisord"
    rootless: true

    plugins:
      argus:
        path: "argus_1.0.0.tar.gz"
        tiers:
          - default
        config: "argus-config.yml"
    tiers:
      default:
        instances_per_server: 5
        replication_factor: 15
        config:
          memtx:
            memory: 1G
          iproto:
            max_concurrent_messages: 1500
    admin_password: "<password>"
    property:
      auto_offline_timeout: 30
DC1: # Датацентр (failure_domain)
  hosts:
    hostname1:
      ansible_host: ip1
    hostname2:
      ansible_host: ip2
    hostname3:
      ansible_host: ip3

Создайте файл с конфигурацией. Пример:

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
  ```

Подготовьте плейбук `picodata.yml`:

```yaml
---
- 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

См. также: