[英]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.