Логикор. Автоматическое развертывание с помощью Ansible

В данной статье описано автоматическое развертывание системы хранения и обработки данных Логикор с помощью плейбуков Ansible.

Подготовка серверов

 
На каждом сервере должна быть выполнена интеграция с корпоративным NTP-сервером.

Настройка SSH-подключения

 

OpenSSH должен быть настроен на стандартный 22 порт.

Для настройки SSH-подключения необходимо выполнить следующие действия:

Шаг 1. Если для развертывания Логикор имеется потребность в использовании непривилегированного пользователя, отличного от root, то необходимо создать целевого SSH-пользователя на всех control- и managed-серверах, если этого не было сделано ранее. Для этого на всех control- и managed-серверах выполните следующие команды:

sudo useradd -m -s /usr/bin/bash -g users -G sudo <целевой_ssh_пользователь>
sudo groupadd <целевой_ssh_пользователь>

Шаг 2. Если целевой пользователь на control- и managed-серверах является непривилегированным, отличным от root, то на каждом из них необходимо добавить пользователя в sudo с отключением ввода пароля:

echo '<целевой_ssh_пользователь> ALL=(ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers

Шаг 3. На control-сервере выполните генерацию SSH-ключей под целевым пользователем, под которым будет запускаться развертывание Логикор:

su - <целевой_ssh_пользователь>
ssh-keygen -t rsa

Шаг 4. Скопируйте публичный SSH-ключ с control-сервера на каждый managed-сервер под целевым SSH-пользователем:

ssh-copy-id <целевой_ssh_пользователь>@<IP_адрес_или_FQDN_managed_сервера_1>
ssh-copy-id <целевой_ssh_пользователь>@<IP_адрес_или_FQDN_managed_сервера_2>
ssh-copy-id <целевой_ssh_пользователь>@<IP_адрес_или_FQDN_managed_сервера_N>

Загрузка сборки Логикор для оффлайн-развертывания

Для оффлайн-развертывания Системы необходимо загрузить на control-сервер оффлайн-версию Логикор и затем распаковать ее. Для этого выполните следующие действия:

Шаг 1. Подключите USB-накопитель к устройству, с которого имеется доступ по SSH на control-сервер и загрузите оффлайн-сборку на него:

scp <путь_к_оффлайн-сбоке_на_USB-накопителе> <целевой_ssh_пользователь>@<адрес_control_сервера>:/opt/logiq_<версия_Логикор>-offline_amd64.run

Шаг 2. Вернитесь в терминал управления control-сервера и установите deb-пакет:

sudo chmod +x /opt/logiq_<версия_Логикор>-offline_amd64.run
sudo /opt/logiq_<версия_Логикор>-offline_amd64.run

Подготовка конфигурационного файла Логикор

Общая информация

Конфигурация Логикор описывается в конфигурационном файле, представляющем собой Ansible Inventory-файл.

В каталоге ./ansible/inventories/presets хранятся пресеты для различных конфигураций Логикор , которые можно использовать как есть (за исключением пресетов, в которых необходимо задать параметры хостов) для развертывания Логикор или для клонирования одного из пресетов с последующей перенастройкой Логикор под специфические условия и окружение:

Путь к конфигурационному файлу Логикор можно указать через флаг -f </conf/path>. Если параметр не указан, то по умолчанию используется путь /etc/logiq/config.yml

Рекомендуется использовать путь по умолчанию /etc/logiq/config.yml для хранения конфигурации Логикор на control-сервере, чтобы исключить риск перезаписи конфигурационного файла при обновлении каталога со сборкой Логикор .

Процесс подготовки конфигурационного файла

Для того чтобы подготовить конфигурационный файл, выполните на control-сервере следующую команду находясь в каталоге сборки Логикор:

sudo cp /usr/share/logiq/ansible/inventories/presets/<имя_выбранного_пресета>.yml /etc/logiq/config.yml

 Настройка приема данных

При подготовке конфигурационного файла необходимо определить способ приема данных. Для этого в файле /etc/logiq/config.yml используется параметр use_apigw_proxy

Пример настройки:

variables_overrides:
  saturn:
    config:
      use_apigw_proxy: "false"

Если параметр saturn.config.use_apigw_proxy: "false", то в контейнере Saturn выполнится публикация внешних портов приема данных, а внешние порты apigw отключатся.

 
Если Saturn и apigw уже были развернуты, то после активации saturn.config.use_apigw_proxy: "false" необходимо переразвернуть и apigw (в первую очередь) и Saturn , иначе контейнер Saturn не сможет развернуться из-за конфликта внешних портов с apigw.

Пример конфигурационного файла

Ниже приведен пример структуры конфигурационного файла Логикор и значение параметров:

# Определение целевых хостов для Логикор. По умолчанию определяется только локальный хост `logiq-control`.
hosts: []
  # Примеры:
  #
  # - name: "<имя целевого хоста>"
  #   address: "<IP|FQDN целевого хоста или переменная ansible>"
  #   connection: "<local|ssh|docker>" # Опциональный параметр с указанием типа подключения ansible на целевые хосты.  Если не указать, то будет использоваться значение 'ssh'.
  #   user: "<ssh username>" # Обязательный параметр с указанием SSH-пользователя, если `connection: "ssh"`. Альтернатива параметру: задать переменную `ansible_user` в секции `variables_overrides` для всех хостов.
  #
  # - name: "logiq-control"
  #   address: "127.0.0.1"
  #   connection: "local"
  # - name: "logiq-storage-01"
  #   address: "10.10.10.10"
  #   connection: "ssh"
  #   user: "root"
 
# Переопределение целевых хостов для конкретных компонентов Логикор. По умолчанию для всех компонентов используется локальный хост `logiq-control`.
# Список доступных компонентов: clickhouse, postgres, s3, apigw, cadvisor, aptly, registry, vault, portainer, mpsiem_rabbitmq, venus, earth, saturn, mercury, prometheus, grafana, openldap, mailhog
targets_overrides: {}
  #
  # Примеры:
  #
  # <наименование компонента>:
  #   hosts:
  #     - <значение параметра `name` целевого хоста из секции `hosts`>
  #
  # clickhouse:
  #   hosts:
  #     - example-logiq-storage-01
  #     - example-logiq-storage-02
 
# Переопределение переменных с параметрами развертывания Логикор и его компонентов. Перечень доступных параметров и их структуру можно посмотреть в /usr/share/logiq/ansible/inventories/defaults.yml
variables_overrides:
  deployment_type: "docker-compose"  # Обязательный параметр с указанием типа развертывания. Возможные значения: docker-compose, helm
  offline_mode: "true"
  init_aptly: "true"
  use_repo_aptly: "true"
  update_repo_sources_list: "false"
  apigw:
    config:
      logiq_info_page_enable: "true"

# Используйте следующие параметры, если требуется интеграция с MP SIEM.
  #  mpsiem_rabbitmq:
  #    use_external_instance: "true"

  mailhog:
    use_external_instance: "true"
  openldap:
    use_external_instance: "true"
  portainer:
    use_external_instance: "true"
  earth:
    config:
      app:
        frontend_url: "http://localhost:5555" # Укажите FQDN\IP-адрес Логикор
      clickhouse:
        max_execution_time: 3600
        max_concurrent_queries_for_user: 40
        max_threads: 4
        max_memory_usage_for_user: 17179869184 # Укажите 1/3 от RAM VM с кликхаусом в байтах
  saturn:
    config:
      jvm_xms: "10g"
      jvm_xmx: "24g" # укажите 1/3 от RAM VM с Сатурном
      jvm_xss: "4M"
# Используйте следующие параметры, если требуется интеграция с MP SIEM.
  #    manual_set_endpoints:
  #      mpsiem_rabbitmq: "localhost" # Укажите адрес rabbitmq MaxPatrol SIEM
  #    vault:
  #      secret_data:
  #        saturn:
  #          mpsiem_rabbitmq_username: "siem" # можно удалить после первого деплоя
  #          mpsiem_rabbitmq_password: "CHANGEME" # можно удалить после первого деплоя

  venus:
# Используйте следующие параметры, если требуется интеграция с MP SIEM.
  #    manual_set_endpoints:
  #      mpsiem_ptkb: "localhost" # Укажите адрес PTKB MaxPatrol SIEM
  #    vault:
  #      secret_data:
  #        venus:
  #          mpsiem_ptkb_username: "Administrator" # можно удалить после первого деплоя
  #          mpsiem_ptkb_password: "CHANGEME" # можно удалить после первого деплоя

Для того чтобы выбрать формат записи событий, необходимо установить его значение для параметра logiq_taxonomy в конфигурационном файле. Для отображения в формате MPSIEM установите значение "mpsiem" (значение по умолчанию), для формата JSON — "json".

 
Вы можете изменить формат записи событий после развертывания системы, следуя инструкции, но в таком случае все записанные события и пользовательские настройки системы будут удалены.

Запуск процесса подготовки хостов к развертыванию Логикор

 

Данный подготовительный шаг необходимо выполнять только для Docker_compose-развертывания.

Для того чтобы запустить процесс подготовки хостов к развертыванию Логикор, выполните на control-сервере следующую команду находясь в каталоге сборки Логикор:

# опциональный параметр: -f <путь_к_конфигурационному_файлу_Логикор>:
logiq prepare-host

Процесс развертывания Логикор

Развертывание Логикор в любом из режимов запускается из каталога сборки. Для этого на control-сервере выполните следующую команду:

# опциональный параметр: -f <путь_к_конфигурационному_файлу_Логикор>:
logiq deploy --components <список_сервисов_и/или_модулей>

Примеры запуска команд

Установка всех компонентов Логикор

logiq deploy --components all

Установка службы vault и модуля services

logiq deploy --components vault,services

Установка нескольких модулей и служб

logiq deploy --components vault,s3,services,openldap,monitoring

Справка об использовании скрипта развертывания Логикор

Справка об использовании скрипта развертывания Логикор
 
Команды:
  prepare-host                                                 Подготовить хосты и окружение к развертыванию или обновлению Логикор
    Использование: logiq prepare-host [--ansible-tags <tag1,tag2,...>]
    Опциональные параметры:
      --ansible-tags <tag1,tag2,...>                           Указать теги для запуска определенных задач Ansible. Если параметр не указан, то по умолчанию указываются все доступные Ansible теги
        Доступные Ansible теги:
          security_disable,set_sysctl,init_aptly,os_packages_install,docker_install
 
  deploy|uninstall                                             Развернуть/обновить или удалить компоненты Логикор
    Использование: logiq <deploy|uninstall> --components <module1,module2|service1,service2...>
    Обязательные параметры:
      --components <module1,module2|service1,service2...>      Список модулей и/или сервисов для развертывания
 
  ansible                                                      Прямой вызов ansible, путь к инвентарю необходимо передать через -f </conf/path> или создать его по пути /etc/logiq/config.yml
    Использование: logiq ansible <ansible commands and flags>
 
  ansible-playbook                                             Прямой вызов ansible-playbook, путь к инвентарю необходимо передать через -f </conf/path> или создать его по пути /etc/logiq/config.yml
    Использование: logiq ansible-playbook <ansible-playbook commands and flags>
 
  get-config                                                   Вывести текущую полную конфигурацию Логикор
    Использование: logiq get-config
 
  get-example-conf                                             Вывести пример конфигурационного файла Логикор
    Использование: logiq get-example-conf
 
  Вывести значение Vault Root Token:
    Использование: logiq ansible-playbook ./ansible/playbooks/mgmt/get_hashi_vault_token.yml
 
Дополнительные флаги:
  -f </conf/path>                                              Путь к конфигурационному файлу Логикор. Если параметр не указан, то по умолчанию используется /etc/logiq/config.yml
  --ansible-opts '<--param1 --param2 -P3>'                     Дополнительные параметры Ansible, например, '-diff --check --list-tasks --limit'
  -h|--help|help                                               Вывести эту справку
  -v|--version|version                                         Вывести версию Логикор
 
Список доступных модулей и сервисов Логикор:
  registry: registry
  tools: portainer,vault
  storage: clickhouse,s3,postgres,mpsiem_rabbitmq
  external: openldap,mailhog
  services: earth,apigw,mercury,mars,saturn,venus
  monitoring: prometheus,grafana,traefik,cadvisor,docket-proxy,script-exporter,saturn-metrics-exporter,php-fpm-exporter
 
Для выбора всех вышеперечисленных модулей укажите: all

Пример развертывания Логикор с внешним слоем хранения

# Выполняем развертывание Docker Registry и tools (portainer, vault)
logiq deploy --components registry,tools
 
# Создаем файл export_hashi_vault_secrets.json с cекретами Логикор с тестовыми значениями
cat <<EOF | sudo tee export_hashi_vault_secrets.json
{
  "clickhouse": {
    "CLICKHOUSE_DB": "logger",
    "CLICKHOUSE_PASSWORD": "CHANGEME",
    "CLICKHOUSE_USER": "logger",
    "CLICKHOUSE_READER_PASSWORD": "CHANGEME",
    "CLICKHOUSE_READER_USER": "logger_reader"
  },
  "ldap": {
    "LDAP_ADMIN_USERNAME": "admin",
    "LDAP_PASSWORDS": "password1,password2",
    "LDAP_USERS": "user01,user02",
    "app_password": "CHANGEME",
    "app_username": "cn=admin,dc=example,dc=org",
    "base_dn": "dc=example,dc=org",
    "bind_on": "ou=users,dc=example,dc=org"
  },
  "mailer": {
    "from_address": "hello@example.com",
    "from_name": "LogIQ",
    "password": "null",
    "username": "null"
  },
  "mpsiem_rabbitmq": {
    "password": "CHANGEME",
    "username": "rabbitmq"
  },
  "postgres": {
    "PATRONI_REPLICATION_PASSWORD": "CHANGEME",
    "PATRONI_REPLICATION_USERNAME": "replicator",
    "PATRONI_RESTAPI_PASSWORD": "CHANGEME",
    "PATRONI_RESTAPI_USERNAME": "admin",
    "PATRONI_SUPERUSER_PASSWORD": "CHANGEME",
    "PATRONI_SUPERUSER_USERNAME": "postgres",
    "PATRONI_admin_PASSWORD": "CHANGEME",
    "app_password": "CHANGEME",
    "app_username": "logiq"
  },
  "s3": {
    "AWS_ACCESS_KEY_ID": "logiq-key",
    "AWS_SECRET_ACCESS_KEY": "CHANGEME",
    "MINIO_ROOT_PASSWORD": "CHANGEME",
    "MINIO_ROOT_USER": "logiq"
  },
  "venus": {
    "mpsiem_ptkb_username": "Administrator",
    "mpsiem_ptkb_password": "CHANGEME"
  },
  "saturn": {
    "mpsiem_rabbitmq_username": "siem",
    "mpsiem_rabbitmq_password": "CHANGEME"
  }
}
EOF
 
# Запускаем процесс импорта секретов в Hashicorp Vault из файла export_hashi_vault_secrets.json
logiq ansible-playbook ./ansible/playbooks/mgmt/import_hashi_vault_secrets.yml
 
# Заходим в веб-интерфейс Hishicorp Vault и актуализируем значения секретов (s3, postgres, clickhouse) на целевые значения
# http://<IP_адрес_или_FQDN_managed_сервера_vault>:8200
# Для того чтобы получить Vault Root Token используйте команду
logiq ansible-playbook ./ansible/playbooks/mgmt/get_hashi_vault_token.yml
 
# После актуализации секретов на целевые значения выполняем экспорт всех секретов Логикор из Hashicorp Vault и копируем их в надежное место для возможности быстрого восстановления в случае потери данных
logiq ansible-playbook ./ansible/playbooks/mgmt/export_hashi_vault_secrets.yml
cat export_hashi_vault_secrets.json

#Для автоматического развертывания компонента слоя хранения Clickhouse и  Clickhouse-keeper в формате bare-metal вносим описание состояния кластера Clickhouse в файл config.yml
hosts:
  - name: "logiq-control"
    address: "10.10.10.1"
    connection: "ssh"
    user: "user"
  - name: "clickhouse-keeper"
    address: "10.10.10.2"
    connection: "ssh"
    user: "user"
    deployment_type: "bare-metal"
  - name: "clickhouse-01"
    address: "10.10.10.3"
    connection: "ssh"
    user: "user"
    deployment_type: "bare-metal"
    clickhouse_shard_id: "shard-1"
    clickhouse_replica_id: "replica-1-1"
# значения по умолчанию
    port_http: "8123"
    port_sql: "9000"
    port_interserver: "9009"
    port_metrics: "9363"
  - name: "clickhouse-02"
    address: "10.10.10.4"
    connection: "ssh"
    user: "deckhouse"
    deployment_type: "bare-metal"
    clickhouse_shard_id: "shard-1"
    clickhouse_replica_id: "replica-1-2"
# значения по умолчанию
    port_http: "8123"
    port_sql: "9000"
    port_interserver: "9009"
    port_metrics: "9363"

# Запускаем развертывание служб и мониторинга
logiq deploy --components services,monitoring
 
Если вы используете внешний ClickHouse и хотите использовать JSON-формат записи событий, необходимо в конфигурационном файле config_clickhouse_profile.xml (или его аналоге) активировать флаг работы с JSON: <enable_json_type>1</enable_json_type>.

FAQ

Что такое control-сервер?

Control-сервер — это хост, с которого вы запускаете `logiq` и инструменты Ansible CLI (ansible-playbook, ansible, ansible-vault и другие).

Вы можете использовать любой компьютер, который соответствует требованиям к программному обеспечению, в качестве control сервера: например, ноутбук с Ubuntu/Debian (или Windows с WSL2), виртуальную машину c Ubuntu/Debian. Вы также можете запускать Ansible в контейнерах, известных как Execution Environments

Что такое managed-серверы?

Managed-серверы — это целевые хосты, которыми вы собираетесь управлять с помощью Ansible и на которые планируется развертывание компонентов Логикор.

Что означает параметр `--components` командах `logiq deploy` или `logiq uninstall`?

В обязательном параметре `--components` необходимо перечислить список модулей и/или сервисов LogIQ, которые планируется развернуть, например, `logiq deploy --components <список_сервисов_и/или_модулей>` или `logiq uninstall --components <список_сервисов_и/или_модулей>`. Подробнее описано в справке `logiq --help`.

Какие модули необходимо указать в параметре `--components` при запуске команд `logiq deploy --components <список_сервисов_и/или_модулей>` или `logiq uninstall --components <список_сервисов_и/или_модулей>`?

Прочитайте справку `logiq --help`.

Как указать нужные версии сервисов?

Просмотрите файл stand.env, в нем можно указать какие версии сервисов использовать при развертывании Логикор.

Как изменить конфигурацию Логикор при развертывании?

Конфигурация Логикор описывается в конфигурационном файле, представляющем собой Ansible Inventory-файл. В каталоге presets хранятся пресеты для различных конфигураций Логикор , которые можно использовать как есть для развертывания Логикор или для клонирования одного из пресеты с последующей перенастройкой Логикор под специфичные условия и окружение.

Как остановить работу служб?

Для остановки работы служб используйте следующую команду:

`logiq uninstall --components <список_служб_и/или_модулей> -f <путь_к_конфигурационному_файлу_Логикор>`


ID статьи: 151
Последнее обновление: 30 апр., 2026
Ревизия: 22
База знаний Логикор -> Документация -> Логикор. Автоматическое развертывание с помощью Ansible
https://docs.axel.pro/logikor-avtomaticheskoe-razvertyvanie-s-pomosh6yu-ansible_151.html