




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
自動(dòng)化任務(wù)控制任務(wù)4:任務(wù)失敗和異常處理目錄/Contents010203忽略錯(cuò)誤任務(wù)失敗強(qiáng)制執(zhí)行處理程序
指定任務(wù)失敗條件04
強(qiáng)制任務(wù)失敗05
指定任務(wù)報(bào)告changed狀態(tài)01忽略錯(cuò)誤忽略錯(cuò)誤錯(cuò)誤和異常處理是編程語(yǔ)言中的重要機(jī)制,主要用于捕捉和處理代碼執(zhí)行時(shí)可能出現(xiàn)的錯(cuò)誤和異常,并確保程序在出現(xiàn)錯(cuò)誤或異常情況時(shí)能夠正確、穩(wěn)定地處理問題,從而保證程序的可靠性和健壯性。當(dāng)執(zhí)行自動(dòng)化任務(wù)時(shí),Ansible將捕獲任務(wù)狀態(tài),通過評(píng)估每個(gè)任務(wù)的狀態(tài),確定任務(wù)是成功的還是失敗的。常見的任務(wù)狀態(tài)如表所示:序號(hào)任務(wù)狀態(tài)描述1ok任務(wù)成功完成2changed任務(wù)成功完成,但進(jìn)行了一些更改,例如更新配置文件或安裝軟件包3skipped任務(wù)被跳過,因?yàn)闂l件不滿足或者已經(jīng)執(zhí)行過相同的任務(wù)4failed任務(wù)執(zhí)行失敗,可能是腳本錯(cuò)誤、連接問題或其他原因?qū)е碌?unreachable無(wú)法連接到遠(yuǎn)程主機(jī),可能是由于網(wǎng)絡(luò)問題或主機(jī)已下線6ignored任務(wù)被忽略,通常是因?yàn)槠渌蝿?wù)的狀態(tài)導(dǎo)致該任務(wù)不必執(zhí)行7rescued當(dāng)使用block和rescue時(shí),若rescue塊中的任務(wù)失敗,Ansible會(huì)跳過該塊并將其標(biāo)記為rescued忽略錯(cuò)誤通常情況下,當(dāng)任務(wù)失敗時(shí),Ansible會(huì)立即終止執(zhí)行當(dāng)前play的其余部分,并跳過所有后續(xù)任務(wù)。但在某些情況下,用戶希望即使任務(wù)失敗也繼續(xù)執(zhí)行play,或者有條件地運(yùn)行其他任務(wù)來恢復(fù)。為了完成這些操作,Ansible提供了多種處理錯(cuò)誤和異常的方法。常見的錯(cuò)誤和異常處理關(guān)鍵字如表所示:序號(hào)方法描述1fail引發(fā)一個(gè)失敗,中斷當(dāng)前任務(wù)或play,并提供自定義的錯(cuò)誤消息。允許在滿足特定條件時(shí)明確終止執(zhí)行,通常與when條件一起使用2ignore_errors忽略執(zhí)行任務(wù)時(shí)出現(xiàn)的錯(cuò)誤并繼續(xù)執(zhí)行后續(xù)任務(wù)。如果在執(zhí)行任務(wù)時(shí)出現(xiàn)錯(cuò)誤,可以將ignore_errors設(shè)置為true以忽略錯(cuò)誤并繼續(xù)執(zhí)行后續(xù)任務(wù)3failed_when根據(jù)特定條件將任務(wù)標(biāo)記為失敗,當(dāng)滿足該條件時(shí)認(rèn)為命令或模塊執(zhí)行失敗,根據(jù)任務(wù)執(zhí)行狀態(tài)繼續(xù)執(zhí)行后續(xù)任務(wù)或執(zhí)行其他操作4changed_when控制任務(wù)在何時(shí)報(bào)告它已進(jìn)行了更改,Ansible執(zhí)行任務(wù)時(shí),會(huì)對(duì)遠(yuǎn)程系統(tǒng)產(chǎn)生影響,如修改配置文件、安裝軟件包等。任務(wù)執(zhí)行的結(jié)果可能導(dǎo)致系統(tǒng)狀態(tài)的變化。通過changed_when關(guān)鍵字,可以定義一個(gè)條件,只有當(dāng)這個(gè)條件滿足時(shí),Ansible才會(huì)將任務(wù)執(zhí)行狀態(tài)標(biāo)記為已變更忽略錯(cuò)誤常見的錯(cuò)誤和異常處理關(guān)鍵字如表所示:序號(hào)方法描述5block和rescue將一組任務(wù)包裝在一個(gè)block塊中,并在遇到錯(cuò)誤時(shí)執(zhí)行rescue塊中的恢復(fù)操作。塊中的任何任務(wù)都可能導(dǎo)致錯(cuò)誤,但是只要有一個(gè)任務(wù)失敗,就會(huì)跳過塊中的其余任務(wù)并執(zhí)行rescue塊中的恢復(fù)操作6always指定任務(wù)總是運(yùn)行,即使之前的任務(wù)失敗或跳過也會(huì)執(zhí)行當(dāng)前任務(wù)7register將任務(wù)的輸出保存到變量中,以便在后續(xù)任務(wù)中使用,以幫助檢查任務(wù)的執(zhí)行結(jié)果,包括檢查任務(wù)是否成功、是否發(fā)生錯(cuò)誤等。比如任務(wù)失敗,可以使用register中的錯(cuò)誤信息進(jìn)行記錄和報(bào)告8force_handlers用于指定在play中強(qiáng)制運(yùn)行錯(cuò)誤處理程序,即使play因?yàn)楹罄m(xù)任務(wù)失敗而終止也會(huì)調(diào)用被通知的處理程序9assert檢查任務(wù)執(zhí)行結(jié)果是否符合預(yù)期,不符合預(yù)期時(shí)引發(fā)錯(cuò)誤,終止任務(wù)的執(zhí)行10max_fail_percentage允許在指定百分比范圍內(nèi)容忍失敗的主機(jī)數(shù)量。如果失敗的主機(jī)數(shù)超出了指定百分比,則Playbook將被標(biāo)記為失敗,且后續(xù)的任務(wù)將不再執(zhí)行11any_errors_fatal如果設(shè)置為true,表示任何一個(gè)任務(wù)失敗都會(huì)導(dǎo)致Ansible立即終止play12ignore_unreachable忽略無(wú)法連接的主機(jī)的錯(cuò)誤,并繼續(xù)執(zhí)行其他主機(jī)的任務(wù)。如果設(shè)置為true,表示在連接失敗時(shí)不會(huì)終止play,而是將任務(wù)標(biāo)記為unreachable13callback_plugins指定錯(cuò)誤處理回調(diào)插件,當(dāng)出現(xiàn)錯(cuò)誤時(shí)執(zhí)行自定義的操作,比如發(fā)送電子郵件通知定義和引用變量在自動(dòng)化任務(wù)執(zhí)行過程中可能會(huì)遇到各種問題,如連接失敗、命令執(zhí)行錯(cuò)誤、模塊調(diào)用異常等。任務(wù)執(zhí)行失敗時(shí),默認(rèn)情況下Ansible會(huì)停止在當(dāng)前主機(jī)上執(zhí)行后續(xù)任務(wù)。在Ansible中,ignore_errors參數(shù)用于忽略任務(wù)執(zhí)行過程中的錯(cuò)誤并繼續(xù)執(zhí)行Playbook任務(wù)。ignore_errors基本語(yǔ)法如下:-name:Sometasksome_module:some_parameter:some_valueignore_errors:true在上述示例中,ignore_errors被設(shè)置為true,表示在執(zhí)行當(dāng)前任務(wù)時(shí)如果出現(xiàn)錯(cuò)誤,Ansible會(huì)忽略該錯(cuò)誤并繼續(xù)執(zhí)行后續(xù)任務(wù)。02任務(wù)失敗強(qiáng)制執(zhí)行處理程序任務(wù)失敗強(qiáng)制執(zhí)行處理程序當(dāng)Ansible執(zhí)行Playbook任務(wù)時(shí),如果其中某個(gè)任務(wù)執(zhí)行失敗,那么當(dāng)前主機(jī)上的后續(xù)處理程序?qū)⒉粫?huì)被運(yùn)行,如果在play中設(shè)置force_handlers:true,即使play因?yàn)楹罄m(xù)任務(wù)失敗而終止也會(huì)調(diào)用被通知的處理程序。處理程序會(huì)在任務(wù)報(bào)告changed時(shí)獲得通知,而在任務(wù)報(bào)告ok或failed時(shí)不會(huì)獲得通知。force_handlers示例如下:-name:Exampleplaywithforce_handlershosts:allforce_handlers:truetasks:-name:Task1command:/bin/truenotify:restartservice-name:Task2command:/bin/falsehandlers:-name:restartserviceservice:name:myservicestate:restarted在示例中,force_handlers被設(shè)置為true,表示無(wú)論哪個(gè)任務(wù)執(zhí)行失敗,Ansible都會(huì)在所有主機(jī)上運(yùn)行restartservice處理程序,并重啟myservice服務(wù)。03指定任務(wù)失敗條件指定任務(wù)失敗條件在任務(wù)中使用failed_when關(guān)鍵字來指定表示任務(wù)已失敗的條件,從而決定是否將任務(wù)標(biāo)記為失敗。failed_when關(guān)鍵字使用的必須是一個(gè)可解析的表達(dá)式,可以使用Jinja2的模板語(yǔ)法和過濾器來定義,當(dāng)任務(wù)輸出的結(jié)果匹配failed_when關(guān)鍵字指定的條件時(shí),該任務(wù)將被標(biāo)記為失敗,否則,該任務(wù)將視為成功。failed_when基本語(yǔ)法如下:在上述示例中,當(dāng)example-command命令的標(biāo)準(zhǔn)錯(cuò)誤輸出中出現(xiàn)了FAILED字符串時(shí),任務(wù)將被標(biāo)記為失敗。-name:Exampletaskwithfailed_whencommand:/usr/bin/example-commandregister:command_resultfailed_when:"'FAILED'incommand_result.stderr"04強(qiáng)制任務(wù)失敗強(qiáng)制任務(wù)失敗fail關(guān)鍵字可用于主動(dòng)觸發(fā)任務(wù)失敗,當(dāng)某些條件不滿足時(shí),需要終止Playbook任務(wù)運(yùn)行,并向用戶提供必要的錯(cuò)誤信息。fail基本語(yǔ)法如下:在上面的示例中,使用stat模塊檢查文件是否存在,并將結(jié)果存儲(chǔ)在注冊(cè)變量file_stat中。在接下來的任務(wù)中,使用fail關(guān)鍵字來檢查文件是否存在,當(dāng)文件不存在時(shí),fail模塊將終止Playbook的運(yùn)行,并輸出錯(cuò)誤信息Filedoesnotexist。-name:Checkiffileexistsstat:path:/path/to/fileregister:file_stat-name:Stopplaybookiffiledoesnotexistfail:msg:"Filedoesnotexist"when:notfile_stat.stat.exists05指定任務(wù)報(bào)告changed狀態(tài)指定任務(wù)報(bào)告changed狀態(tài)changed_when條件語(yǔ)句可以定義任務(wù)是否對(duì)遠(yuǎn)程節(jié)點(diǎn)進(jìn)行了變更,用戶可以根據(jù)返回代碼或輸出來確定是否應(yīng)該在Ansible統(tǒng)計(jì)信息中報(bào)告變更,以及是否應(yīng)該觸發(fā)處理程序。changed_when關(guān)鍵字用于定義任務(wù)的狀態(tài)變化條件,如果任務(wù)的執(zhí)行結(jié)果滿足changed_when定義的條件,則任務(wù)將被標(biāo)記為狀態(tài)變化。changed_when基本語(yǔ)法如下:tasks:-name:Report'changed'whenthereturncodeisnotequalto2shell:/usr/bin/billybass--mode="takemetotheriver"register:bass_resultchanged_when:"bass_result.rc!=2"-name:Thiswillneverreport'changed'statusshell:wall'beep'changed_when:False在上述示例中,第一個(gè)任務(wù)使用shell模塊來運(yùn)行命令,并將命令執(zhí)行的結(jié)果保存在bass_result注冊(cè)變量中。changed_when
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 住建部家裝修合同范例
- 供暖規(guī)劃編制合同范例
- 代銷售紅酒合同范例
- 攔污柵施工方案
- 出租場(chǎng)地合同范例
- 壓縮機(jī)用兆瓦級(jí)高速永磁電機(jī)損耗與熱特性研究
- 買賣小型合同范例
- 內(nèi)墻承包合同范例
- 《實(shí)施高質(zhì)量初級(jí)保健-重建衛(wèi)生保健基礎(chǔ)》(節(jié)選)英漢翻譯實(shí)踐報(bào)告
- 第二節(jié) 物業(yè)管理服務(wù)機(jī)構(gòu)設(shè)置及運(yùn)作流程
- 2025年上半年江西宜春市事業(yè)單位招聘工作人員651人重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 初三心理健康 教育課件
- UL1650標(biāo)準(zhǔn)中文版-2019便攜式電纜UL中文版標(biāo)準(zhǔn)
- 高血壓課件教學(xué)課件
- 起重機(jī)械的安全管理制度(4篇)
- 2024解析:第十六章電壓和電阻-基礎(chǔ)練(解析版)
- 湖北聯(lián)投集團(tuán)2024校園招聘【298人】管理單位遴選500模擬題附帶答案詳解
- DZT0203-2020礦產(chǎn)地質(zhì)勘查規(guī)范稀有金屬類
- 中學(xué)實(shí)驗(yàn)室安全風(fēng)險(xiǎn)分級(jí)管控制度
- 部編版語(yǔ)文七年級(jí)下冊(cè)第六單元《課外古詩(shī)詞誦讀》導(dǎo)學(xué)案(含答案)
評(píng)論
0/150
提交評(píng)論