我有一個應該運行SQL腳本列表的任務。如果在序列中執行ANY腳本期間發生錯誤,則該任務應該停止執行。Ansible - 在循環任務執行期間檢查任務是否失敗
給出以下任務,是否有方法可以修改它以查看當前迭代循環的寄存器stdout,以檢查'ERROR'
是否在stdout中?
- name: Build and run SQLPlus commands
shell: 'echo @{{ item }} | {{ sqlplus }} {{ db_user }}/{{ db_pass }}@{{ environment }}'
register: sh1
with_items:
- ["a.sql", "b.sql"]
# failed_when: "'ERROR' in sh1.stdout_lines"
我在想沿着最後的註釋行線的東西,但由於sh1
是一個循環任務寄存器變量,從每個SQL腳本的輸出所在的列表sh1
results
內;所以我不確定如何訪問剛剛執行的命令的特定標準輸出。
如果shell命令返回非零退出代碼,任務將自動失敗。你不必做任何事情。 – helloV
@helloV這不是錯誤的命令,該命令使用sqlplus執行SQL腳本,如果腳本沒有正確運行,sqlplus的輸出包含單詞「ERROR」。我知道shell命令執行成功,因爲在使用'echo $?'跟蹤sqlplus命令後,我得到退出碼0「 –