0

我正在尝试从 ansible playbook 执行 opendistro/elasticsearch 安全设置脚本,并一直失败并返回代码 126。

    - name: Initialize elasticsearch security
      command: /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh [...]
      environment:
        JAVA_HOME: /usr/share/elasticsearch/jdk/bin/java

fatal: [sys-centos8a]: FAILED! => {"changed": true, "cmd": ["/usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh"], "delta": "0:00:00.013054", "end": "2021-02-19 09:41:50.267357", "msg": "non-zero return code", "rc": 126, "start": "2021-02-19 09:41:50.254303", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}

设置为 root 不应该是权限错误,但要确保我将权限设置为 777 而没有更改。

env设置和sudo有问题,所以我添加Defaults env_keep += "JAVA_HOME"到sudoers文件中。但是仍然没有改变 ansible 返回 126 错误。

我尝试了几种变体,例如使用 elasticsearch 用户或显式 sudo,但没有任何效果。如果我手动 ssh 到目标(作为 root 或 elasticsearch 用户),它可以完美地工作,但我似乎错过了 ansible 中的一些东西。

有任何想法吗?

4

1 回答 1

0

按照 mdaniel 的建议使用 bash -x 导致

+ BIN_PATH=/usr/share/elasticsearch/jdk//bin/java
~ manual start
+ BIN_PATH=/usr/share/elasticsearch/jdk/bin/java/bin/java
+ ansible

我假设 JAVA_HOME 将是可执行文件,但显然它必须是 JDK 文件夹。

于 2021-02-19T18:17:41.647 回答