0x0i.elasticsearch

Роль Ansible :mag_right: :high_brightness: Elasticsearch
Содержание
- Поддерживаемые платформы
- Требования
- Переменные роли
- Зависимости
- Пример плейбука
- Лицензия
- Информация об авторе
Роль 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для настройки Elasticsearchjvm.optionsдля настройки JVM параметров Elasticsearchlog4j2.propertiesдля настройки логирования Elasticsearch
Эти файлы находятся в каталоге конфигурации, который, как уже упоминалось, зависит от того, применяется ли установка из архивного дистрибутива (tar.gz или zip) или дистрибутива пакетов (Debian или RPM).
Для получения дополнительных подробностей и представления о том, как должна выглядеть каждая конфигурация, см. официальную документацию Elastic по настройке.
Следующие переменные можно настроить для управления местоположением и содержанием этих конфигурационных файлов:
config_dir: </путь/к/каталогу/конфигурации> (по умолчанию: /opt/elasticsearch/config)
- путь на целевом хосте, где должны храниться вышеупомянутые конфигурационные файлы
managed_configs: <список конфигураций для управления> (по умолчанию: см. defaults/main.yml)
список конфигурационных файлов, которые следует управлять с помощью этой роли Ansible
Разрешенные значения: любые комбинации из:
elasticsearch_configjvm_optionslog4j_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, которые передаются бинарному файлу во время выполнения для настройки запуска. Поддерживая полное выражение clielasticsearch, эта переменная позволяет настраивать запуск в соответствии со спецификациями пользователя.
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.elasticsearch