簡體   English   中英

ANSIBLE - shell 任務返回非零返回碼,但在終端中工作

[英]ANSIBLE - shell task returns non-zero return code but otherwise works in terminal

我有一個 ansible 任務:

  - name: Get vault's binary path
    shell: type -p vault
    register: vault_binary_path

返回

 TASK [update_vault : Get vault's binary path] **********************************************************************************************************************************************************************
fatal: [xxxxx]: FAILED! => {"changed": true, "cmd": "type -p vault", "delta": "0:00:00.003303", "end": "2020-04-08 11:37:19.636528", "msg": "non-zero return code", "rc": 1, "start": "2020-04-08 11:37:19.633225", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}

但是當我在 shell 中運行它時,它返回就好了

[root@ip-xxxxx]# type -p vault
/usr/local/bin/vault

我以 root 身份運行 ansible 並使用become: true 之前的所有步驟都很好,直到這一步。 任何建議表示贊賞。

在 playbook 中定義對PATH的更新:

environment:
  PATH: "{{ ansible_env.PATH }}:/usr/local/bin"

...這樣/usr/local/bin就可以保證被包括在內。

(此外,雖然在編寫特定於 bash 的代碼type時幾乎總是比which更可取,但情況並非如此,因為您的shell可能是/bin/sh ,不能保證支持任何未提供的功能在 POSIX sh 規范中。考慮更改為shell: command -v vault ,保證在所有符合 POSIX 的 shell 上按預期工作)。

我面臨這個問題,任何給我一個解決方案

{“更改”:true,“cmd”:[“docker”,“build”,“-t”,“simple-devops-image”,“.”],“delta”:“0:00:00.040629”, “end”:“2021-12-09 15:12:56.379394”,“msg”:“非零返回碼”,“rc”:1,“start”:“2021-12-09 15:12:56.338765 ", "stderr": "無法准備上下文: 無法評估 Dockerfile 路徑中的符號鏈接: lstat /home/ansadmin/Dockerfile: 沒有這樣的文件或目錄", "stderr_lines": ["無法准備上下文: 無法評估符號鏈接在 Dockerfile 路徑:lstat /home/ansadmin/Dockerfile: 沒有這樣的文件或目錄"], "stdout": "", "stdout_lines": []}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM