elasticsearch

логотип ansible

логотип elasticsearch

Роль Ansible :mag_right: :high_brightness: Elasticsearch

Роль Galaxy Релиз на GitHub (последний по дате) Лицензия: MIT

Содержание

Роль Ansible для установки и настройки Elasticsearch, движка для аналитики и поиска в реальном времени.

Поддерживаемые платформы:
* Debian
* Redhat (CentOS/Fedora)
* Ubuntu

Требования

Требуется утилита unzip/gtar, установленная на целевом хосте. Подробности см. в заметках модуля ansible unarchive.

Переменные роли

Переменные доступны и организованы в соответствии с этапами развертывания программного обеспечения и машин:

  • установка
  • конфигурация
  • запуск
  • удаление

Установка

elasticsearch можно установить с помощью систем управления пакетами ОС (например, apt, yum) или распакованных архивов (.tar, .zip), загруженных из различных источников.

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

elasticsearch_user: <имя-пользователя-сервиса> (по умолчанию: elasticsearch)

  • выделенный служебный пользователь и группа, используемые elasticsearch для разделения привилегий (подробности см. здесь)

install_type: <package | archive> (по умолчанию: archive)

  • package: поддерживается дистрибутивами Debian и Redhat, установка пакета Elasticsearch извлекает указанный пакет из соответствующего репозитория управления пакетами.
    • Обратите внимание, что каталог установки определяется системой управления пакетами и в настоящее время по умолчанию устанавливается в /usr/share для обоих дистрибутивов. Попытки установить пакет на другие дистрибутивы Linux приведут к сбою из-за отсутствия поддержки.
  • archive: совместимо с tar и zip форматами, архивные установки бинарных файлов можно получить из локальных и удаленных сжатых архивов как с официального сайта загрузок/релизов, так и из разработческих/настраиваемых источников.

install_dir: </путь/к/каталогу/установки> (по умолчанию: /opt/elasticsearch)

  • путь на целевом хосте, где бинарные файлы elasticsearch должны быть извлечены.

archive_url: <путь-или-url-к-архиву> (по умолчанию: см. defaults/main.yml)

  • адрес сжатого tar или zip архива, содержащего бинарные файлы elasticsearch. Этот метод технически поддерживает установку любой доступной версии elasticsearch. Ссылки на официальные версии можно найти здесь.

archive_checksum: <путь-или-url-к-хешу> (по умолчанию: см. defaults/main.yml)

  • адрес файла контрольной суммы для проверки целостности данных указанного архива. Хотя это рекомендуется и обычно считается хорошей практикой, указание контрольной суммы не обязательно и может быть отключено путем указания пустой строки ('') для ее значения.

package_url: <путь-или-url-к-пакету> (по умолчанию: см. defaults/main.yml)

  • адрес Debian или RPM пакета, содержащего исходные файлы и бинарные файлы elasticsearch. Обратите внимание, что структура установки определяется системами управления пакетами. Ознакомьтесь с официальной документацией Elastic для деталей установки как RPM, так и Debian.

package_checksum: <путь-или-url-к-хешу> (по умолчанию: см. vars/...)

  • адрес файла контрольной суммы для проверки целостности данных указанного пакета. Хотя это рекомендуется и обычно считается хорошей практикой, указание контрольной суммы не обязательно и может быть отключено путем указания пустой строки ('') для ее значения.

checksum_format: <строка> (по умолчанию: см. sha512)

  • алгоритм хеширования, используемый для проверки файлов с учетом указанной контрольной суммы архива или пакета. Дополнительную информацию о контрольных суммах/криптографических хешах можно найти здесь.

Конфигурация

Конфигурация elasticsearch выражается в 3 файлах:

  • elasticsearch.yml для настройки Elasticsearch
  • jvm.options для настройки JVM параметров Elasticsearch
  • log4j2.properties для настройки логирования Elasticsearch

Эти файлы находятся в каталоге конфигурации, который, как уже упоминалось, зависит от того, применяется ли установка из архивного дистрибутива (tar.gz или zip) или дистрибутива пакетов (Debian или RPM).

Для получения дополнительных подробностей и представления о том, как должна выглядеть каждая конфигурация, см. официальную документацию Elastic по настройке.

Следующие переменные можно настроить для управления местоположением и содержанием этих конфигурационных файлов:

config_dir: </путь/к/каталогу/конфигурации> (по умолчанию: /opt/elasticsearch/config)

  • путь на целевом хосте, где должны храниться вышеупомянутые конфигурационные файлы

managed_configs: <список конфигураций для управления> (по умолчанию: см. defaults/main.yml)

  • список конфигурационных файлов, которые следует управлять с помощью этой роли Ansible

    Разрешенные значения: любые комбинации из:

    • elasticsearch_config
    • jvm_options
    • log4j_properties

config: <хеш-настроек-elasticsearch> по умолчанию: {}

  • Конфигурационный файл должен содержать настройки, которые специфичны для узла (например, node.name и paths), или настройки, необходимые узлу, чтобы иметь возможность присоединиться к кластеру.

Любая настройка/пара значений, поддерживаемая elasticsearch, должна быть выражена в хеше и правильно отображена в соответствующей YAML конфигурации. Значения можно указать в типичной форме yaml/ansible (например, строки, числа и true/false значения должны быть написаны как есть и без кавычек).

Ключи хеша config могут быть как вложенными, так и разделенными точкой:

config:
  node.name: example-node
  path:
    logs: /var/log/elasticsearch

Список настраиваемых параметров можно найти здесь.

jvm_options: <список-словарей> по умолчанию: []

  • Предпочтительный способ установки параметров JVM (включая системные свойства и флаги JVM) — через конфигурационный файл jvm.options. Файл состоит из списка аргументов, разделенных строками, используемых для изменения поведения JVM Elasticsearch.

Хотя вам редко нужно изменять параметры Java Virtual Machine (JVM); существуют ситуации (например, недостаточное выделение памяти), в которых могут потребоваться корректировки. Каждая строка, которую необходимо отобразить в файле, может быть выражена как запись в списке словарей, содержащихся в jvm_options, состоящем из хеша, состоящего из необязательного поля comment и списка соответствующих аргументов для настройки:

jvm_options:
  - comment: установить минимальный и максимальный размер кучи JVM (в одно и то же значение)
    arguments:
      - '-Xms1g'
      - '-Xmx1g'

Список доступных аргументов можно найти здесь.

log4j_properties: <список-словарей> по умолчанию: []

  • Elasticsearch использует систему логирования Apache log4j 2 для организации и управления логированием своих основных и подкомпонентов. Таким образом, отдельные настройки могут быть применены как в глобальном, так и в индивидуальном порядке для каждого компонента, определяя настройки конфигурации, связанные с различными аспектами процесса логирования. По умолчанию log4j 2 загружает файл log4j2.properties, который состоит из свойств, разделенных строками, представляющих пару ключ-значение для желаемой конфигурации.

3 свойства ${sys:es.logs.base_path}, ${sys:es.logs.cluster_name} и ${sys:es.logs.node_name} открыты для Elasticsearch и могут быть упомянуты в конфигурационном файле для определения местоположения этого лог-файла и потенциально других. Свойство ${sys:es.logs.base_path} будет разрешаться как каталог логирования, ${sys:es.logs.cluster_name} — как имя кластера (используется как префикс имен файлов логов в конфигурации по умолчанию), а ${sys:es.logs.node_name} — как имя узла (если имя узла явно указано).

Каждая строка, которую необходимо отобразить в файле, может быть выражена как запись в списке словарей, содержащихся в log4j_properties, состоящем из хеша, содержащего необязательное поле comment и список соответствующих пар ключ-значение:

log4j2_properties:
  - comment: регистрировать ошибки выполнения логирования для упрощения отладки
    settings:
      - logger.action.name: org.elasticsearch.action
        logger.action.level: debug

См. официальную документацию Elastic по логированию для получения более подробной информации о списке доступных конфигураций и примеров, как должна выглядеть эта конфигурация.

data_dir: </путь/к/каталогу/данных> (по умолчанию: /var/data/elasticsearch)

  • путь на целевом хосте, где должны храниться данные, созданные службой Elasticsearch (например, индексированные записи)

logs_dir: </путь/к/каталогу/логов> (по умолчанию: /var/log/elasticsearch)

  • путь на целевом хосте, где должны храниться логи, создаваемые службой Elasticsearch

Запуск

Запуск службы поиска и аналитики elasticsearch вместе с ее API-сервером осуществляется с помощью инструмента управления службами systemd как для установки пакетов, так и архивов. Запущенная как фоновый процесс или демоны, подлежащие конфигурации и возможностям выполнения, предоставленным основной управляющей структурой, запуск elasticsearch может быть настроен в соответствии с административными политиками системы, подходящими для вашей среды и организации.

Следующие переменные можно настроить для управления определением сервисного юнита и профилем/политикой выполнения службы systemd:

extra_run_args: <опции-elasticsearch-cli> (по умолчанию: [])

  • список аргументов командной строки elasticsearch, которые передаются бинарному файлу во время выполнения для настройки запуска. Поддерживая полное выражение cli elasticsearch, эта переменная позволяет настраивать запуск в соответствии со спецификациями пользователя.

custom_unit_properties: <хеш-настроек-сервиса-systemd> (по умолчанию: [])

  • хеш настроек, используемых для настройки конфигурации и среды выполнения юнита службы Elasticsearch systemd.
custom_unit_properties:
  Environment: "ES_HOME={{ install_dir }}"
  LimitNOFILE: infinity

См. страницу man systemd.service для обзора конфигурации и справки.

Удаление

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

Следующая переменная(ые) могут быть настроены для управления этим процессом удаления:

perform_uninstall: <true | false> (по умолчанию: false)

  • нужно ли удалить и удалить все артефакты и остатки этой установки elasticsearch на целевом хосте (см.: handlers/main.yml для подробностей)

Зависимости

  • 0x0i.systemd

Пример плейбука

пример по умолчанию:

- hosts: all
  roles:
  - role: 0x0I.elasticsearch

установить конкретную версию нативного пакета дистрибутива ОС с предопределенными настройками по умолчанию:

- hosts: legacy-ES-cluster
  roles:
  - role: 0x0I.elasticsearch
    vars:
        managed_configs: []
        install_type: package
        package_url: https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.0.0/elasticsearch-2.0.0.rpm
        package_checksum: https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.0.0/elasticsearch-2.0.0.rpm.sha1
        checksum_format: sha1

развернуть гибридный мастер/данные узел с настроенными директориями для данных и логирования:

- hosts: test-elasticsearch
  roles:
    - role: 0x0I.elasticsearch
      vars:
        managed_configs: ['elasticsearch_config']
        config:
          cluster.name: example-cluster
          node.master: true
          node.data: true
          path:
            data: /mnt/data/elasticsearch
            logs: /mnt/logs/elasticsearch

подстроить настройки кучи JVM и включить подробное логирование для отладки/устранения неполадок кластера:

- hosts: elasticsearch
  roles:
    - role: 0x0I.elasticsearch
      vars:
        managed_configs: ['jvm_options', 'log4j2_properties']
        jvm_options:
          - comment: подстроить минимальный и максимальный размер кучи JVM для обработки увеличенного объема выходных данных
            arguments:
              - '-Xms16g'
              - '-Xmx16g'
        log4j2_properties:
          - comment: регистрировать ошибки выполнения действий для упрощения отладки
            settings:
              - logger.action.name: org.elasticsearch.action
                logger.action.level: debug
        extra_run_args:
          - '--verbose'

Лицензия

MIT

Информация об авторе

Эта роль была создана в 2019 году O1.IO.

О проекте

Elasticsearch, a real-time distributed search and analytics engine

Установить
ansible-galaxy install 0x0I/ansible-role-elasticsearch
Лицензия
Unknown
Загрузки
450
Владелец