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_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
, которые передаются бинарному файлу во время выполнения для настройки запуска. Поддерживая полное выражение 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/ansible-role-elasticsearch