簡體   English   中英

捕獲任務的返回代碼作為 Ansible Playbook 的退出代碼

[英]Capture Return Code of task as exit code for Ansible Playbook

讓我們從頭開始:

  • 我有一個 bash 腳本,它會根據報告的錯誤返回不同的退出代碼。
  • 我用 ansible BUT 啟動該腳本,當腳本失敗時,我用“echo $?”檢查了 ansible-playbook 退出代碼。 與遠程腳本的退出代碼不同。

我知道 Ansible 有以下退出代碼:

*0* -- OK or no hosts matched

*1* -- Error

*2* -- One or more hosts failed

*3* -- One or more hosts were unreachable

*4* -- Parser error

*5* -- Bad or incomplete options

*99* -- User interrupted execution

*250* -- Unexpected error

所以問題是是否有任何方法可以將任務的返回碼作為 Ansible Playbook 的退出碼。

問候,

Q: “有什么方法可以將任務的返回碼作為 AnsiblePlaybook 的退出碼?”

A:沒有這樣的選擇。 可以使用 ansible-runner 代替。 請參閱工件

ansible-runner 很復雜,不適用於 macOS。

這是我的 playbook.yml 的結尾:

  tasks:
    - name: Prepare VM
      script: ./logic.bash &> ~/logic.bash.log
      register: returned
      ignore_errors: yes
    - name: read log
      shell: |
        cat ~/logic.bash.log
      register: file_content
    - name: print log
      debug:
        verbosity: 2
        msg: "{{ file_content.stdout }}"
    - name: print RC
      debug:
        msg: "RETURN_CODE: {{returned.rc}}"

這是我在名為 run.bash 的腳本中使用的代碼,用於執行 playbook 並檢查任務的 RC。

ID="${RANDOM}"
ansible-playbook -vvvv -i ${BUZYFORM_INVENTORY_FILE} playbook.yml > /tmp/"${ID}"
RC="$(grep RETURN_CODE /tmp/${ID} | cut -d"|" -f2)"
cat /tmp/"${ID}"
[[ ${RC} -gt 0 ]] && exit ${RC} || true

暫無
暫無

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

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