【问题标题】:Running bash/java script from ansible keeps failing with return code 126从 ansible 运行 bash/java 脚本一直失败,返回码 126
【发布时间】:2021-02-19 08:43:31
【问题描述】:

我正在尝试从 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 有问题,所以我在 sudoers 文件中添加了Defaults env_keep += "JAVA_HOME"。但仍然没有改变 ansible 返回 126 错误。

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

有什么想法吗?

【问题讨论】:

  • 嗨阿多纳斯,欢迎来到 SO。您可能希望使用 bash -x 运行该脚本以查看它正在尝试什么命令,以及它失败的原因:command: bash -x /usr/...
  • MDaniel,谢谢,我以前从未听说过 bash 跟踪,但它让我走上了正轨。

标签: ansible elasticsearch-opendistro


【解决方案1】:

按照 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 文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多