[英]Capture Return Code of task as exit code for 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 代替。 請參閱工件。
使用set_stats自定義 playbook 的輸出。
使用ansible-runner運行劇本。
從artifacts/ID/stdout獲取自定義輸出。
創建包裝器。 FWIW,作為提示arwrapper.bash和Ansible Runner Usage Examples 。
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.