Ansible 處理失敗的任務

2022-09-06 20:15:11 字數 1639 閱讀 4267

1、管理play中任務錯誤

1️⃣:ansible評估任務的返回**,從而確定任務是成功還是失敗

2️⃣:通常而言,當任務失敗時,ansible將立即在該主機上中止play的其餘部分並且跳過所有後續任務,但有些時候,可能希望即使在任務失敗時也繼續執行play

2、忽略任務失敗

1️⃣:預設情況下,任務失敗時play會中止。不過,可以通過忽略失敗的任務來覆蓋此行為。可以在任務中使用ignore_errors關鍵字來實現此目的

3、任務失敗也強制執行處理程式(handlers)

1️⃣:在play中設定force_handlers: yes關鍵字,則即使play因為後續任務失敗而中止也會呼叫被通知的處理程式(force:促使,推動)

2️⃣:處理程式會在任務報告changed結果時獲得通知,而在任務報告okfailed結果時不會獲得通知

4、指定任務失敗的條件

1️⃣:在任務中使用failed_when關鍵字來指定表示任務已失敗的條件;通常與命令模組搭配使用,這些模組可能成功執行了某一命令,但命令的輸出可能指示了失敗

2️⃣:fail模組也可用於強制任務失敗(主要是將雜亂的提示資訊通過自己設定提示方式,達到簡單、明了的目的)

5、指定何時任務報告「changed」結果

1️⃣:當任務對託管主機進行了更改時,會報告changed狀態並通知處理程式;如果任務不需要進行更改,則會報告ok並且不通知處理程式

2️⃣:使用changed_when關鍵字可用於控制任務在何時報告它已進行了更改

3️⃣:根據通過已註冊變數收集的模組的輸出來報告changed

6、ansible塊和錯誤處理

1️⃣:在playbook中,塊是對任務進行邏輯分組的子句,可用於控制任務的執行方式

2️⃣:通過塊,也可結合rescuealways語句來處理錯誤。如果塊中的任何任務失敗,則執行其rescue塊中的任務來進行恢復

3️⃣:在block子句中的任務以及rescue子句中的任務(如果出現故障)執行之後,always子句中的任務執行

4️⃣:總結:

5️⃣:演示:

6️⃣:block中的when條件也會應用到其rescuealways子句(若存在)

Ansible執行任務的方式

一是 ad hoc 命令,一是寫 ansible playbook.前者可以解決一些簡單的任務,後者解決較複雜的任務.usr bin ansible usr bin ansible playbook例子 使用 ansible 的命令列工具來重啟 atlanta 組中所有的 web 伺服器,每次重啟1...

Ansible任務執行控制的traning

需求 建立playbook westos.yml要求如下 建立大小為1500m名為 dev vdb1的裝置 如果 dev vdb不存在請輸入 dev vdb is not exist 如果 dev vdb大小不足2g請輸出 dev vdb is less then 2g 並建立800m大小的 dev...

hadoop 任務失敗重複次數的處理方法

hadoop任務分為map task和reduce task,當map task執行失敗後會重試,超過重試次數 mapred.map.max.attempts指定,預設為4 整個job會失敗,這是我們不想看到的。解決辦法 hadoop提供配置引數 mapred.max.map.failures.pe...