我怎样才能让 Logstash-Keystore 找到它的密码?

How can I get Logstash-Keystore to find its password?

对于背景:我正在尝试自动化步骤以在 Ansible 中配置和创建大量 Logstash 进程,但希望确保在自动化过程之前手动执行这些步骤和配置。

我已经按照 Elastic 的文档(它是一个 RPM 安装)安装了 Logstash,并且它正确地将日志传送到我的 ES 实例而没有问题。 Elasticsearch 和 Logstash 都是 v7.12.0.

keystore docs 之后,我创建了一个 /etc/sysconfig/logstash 文件并将该文件的权限设置为 0600。我已将 LOGSTASH_KEYSTORE_PASS 密钥添加到文件中在创建和读取密钥库本身时用作 keystore 命令的环境变量。

根据 运行 sudo /usr/share/logstash/bin/logstash-keystore --path.settings /etc/logstash create 命令,进程返回以下错误:

WARNING: The keystore password is not set. 
Please set the environment variable `LOGSTASH_KEYSTORE_PASS`.
Failure to do so will result in reduced security.
Continue without password protection on the keystore? [y/N]

这不应该是这种情况,因为密钥库进程应该从上述文件中获取我的密码 env var。有没有人遇到过类似的问题,如果有,你是怎么解决的?

这是预期的,只有当您将 logstash 作为服务启动时,文件 /etc/sysconfig/logstash 才会被读取,而不是当您从命令行 运行 它时。

要创建密钥库,您需要先使用密码导出变量,如文档中所述。

set +o history
export LOGSTASH_KEYSTORE_PASS=mypassword
set -o history
sudo -E /usr/share/logstash/bin/logstash-keystore --path.settings /etc/logstash create

之后,当您将 logstash 作为服务启动时,它将从 /etc/sysconfig/logstash 文件中读取变量。