0x0i.elasticsearch
Ansible 角色 :mag_right: :high_brightness: Elasticsearch
目录
此 Ansible 角色用于安装和配置 Elasticsearch,一个实时的分布式搜索和分析引擎。
支持的平台:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu
要求
在目标主机上需要安装 unzip/gtar
工具。有关详细信息,请参见 Ansible 的 unarchive
模块 说明。
角色变量
变量可用,按以下软件和机器提供阶段进行组织:
- install
- config
- launch
- uninstall
安装
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: </path/to/installation/dir>
(默认: /opt/elasticsearch
)
- 目标主机上
elasticsearch
二进制文件应提取到的路径。
archive_url: <path-or-url-to-archive>
(默认: 见 defaults/main.yml
)
- 包含
elasticsearch
二进制文件的压缩 tar 或 zip 档案的地址。该方法技术上支持安装任何可用版本的elasticsearch
。官方版本的链接可以在 这里 找到。
archive_checksum: <path-or-url-to-checksum>
(默认: 见 defaults/main.yml
)
- 用于验证指定档案的数据完整性的校验和文件的地址。虽然推荐并通常认为是最佳实践,但指定校验和 不是必需 的,可以通过提供一个空字符串 (
''
) 来禁用。
package_url: <path-or-url-to-package>
(默认: 见 defaults/main.yml
)
- 包含
elasticsearch
源文件和二进制文件的 Debian 或 RPM 包的地址。请注意,安装布局由包管理系统确定。有关 RPM 和 Debian 安装详细信息,请参考 Elastic 的官方文档。
package_checksum: <path-or-url-to-checksum>
(默认: 见 vars/...
)
- 用于验证指定包的数据完整性的校验和文件的地址。虽然推荐并通常认为是最佳实践,但指定校验和 不是必需 的,可以通过提供一个空字符串 (
''
) 来禁用。
checksum_format: <string>
(默认: 见 sha512
)
- 用于与指定的档案或包校验和相关的文件验证的哈希算法。有关校验和/加密哈希的更多信息,请参考 这里。
配置
elasticsearch
的配置通过 3 个文件表示:
elasticsearch.yml
用于配置 Elasticsearchjvm.options
用于配置 Elasticsearch JVM 设置log4j2.properties
用于配置 Elasticsearch 日志记录
这些文件位于配置目录中,这取决于安装是否来自档案分发(tar.gz 或 zip)或包分发(Debian 或 RPM 包)。
有关更多详细信息以及获取每个配置的示例,请参考 Elastic 的官方 配置 文档。
以下变量可以自定义,以管理这些配置文件的位置和内容:
config_dir: </path/to/configuration/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 形式表示(例如,字符串、数字和布尔值应直接书写而不加引号)。
config
哈希的键可以是嵌套的,也可以用 '.' 分隔:
config:
node.name: example-node
path:
logs: /var/log/elasticsearch
可配置设置的列表可以在 这里 找到。
jvm_options: <字典列表>
默认: []
- 设置 JVM 选项(包括系统属性和 JVM 标志)的首选方法是通过 jvm.options 配置文件。该文件由用于修改 Elasticsearch 的 JVM 行为的参数组成,按行分隔。
虽然您应该很少需要更改 Java 虚拟机(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: </path/to/data/dir>
(默认: /var/data/elasticsearch
)
- 目标主机上由 Elasticsearch 服务生成的数据(例如,索引记录)应存储的路径。
logs_dir: </path/to/log/dir>
(默认: /var/log/elasticsearch
)
- 目标主机上 Elasticsearch 服务生成的日志应存储的路径。
启动
使用 systemd 服务管理工具启动 elasticsearch
搜索和分析服务以及其 API 服务器,这适用于 package 和 archive 安装。根据底层管理框架提供的配置和执行潜力,在后台进程或守护进程中启动 elasticsearch
,可以设置为遵循适合您的环境和组织的系统管理策略。
以下变量可以自定义以管理服务的 systemd 服务单元定义和执行配置:
extra_run_args: <elasticsearch-cli-options>
(默认: []
)
- 在运行时传递给二进制文件的
elasticsearch
命令行参数列表,以自定义启动。支持完全表达elasticsearch
的 cli,此变量使启动可以根据用户的规格进行自定义。
custom_unit_properties: <systemd 服务设置的哈希>
(默认: []
)
- 用于自定义 Elasticsearch systemd 服务的 [Service] 单元配置和执行环境的设置哈希。
custom_unit_properties:
Environment: "ES_HOME={{ install_dir }}"
LimitNOFILE: infinity
请参考 systemd.service man 页面以了解配置概述和参考。
卸载
支持卸载和删除必要的工件,使用户/操作者可以将目标主机恢复到应用此角色之前的配置状态。这对于回收节点和角色或在工具升级之间提供更平滑/管理的过渡可能是有用的。
以下变量可以自定义以管理此卸载过程:
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
作者信息
此角色由 O1.IO 于 2019 年创建。