第四章: 控制任務條件

控制任務條件

ansible基本上是在任務狀態的基礎上運行的:web

  • Ok
  • Changed
  • Failed
  • Skipped

這些狀態決定了是否須要在主機上執行進一步的任務、或者因爲某些變化是否須要通知處理器。任務也可使用對以前的任務狀態檢查條件進行控制操做。shell

本章中,咱們探討幾種在決定任務狀態時影響ansible的方式:dom

  • 定義失敗的控制。
  • 定義狀態改變的控制。

定義失敗

ansible的不少模塊對於指定錯誤都有一個選項可作。錯誤條件高度依賴某個模塊,那麼這個模塊就會嘗試完成它。當模塊返回錯誤,那麼對應的主機會從可用主機列表移除,防止進一步的任務或處理器在那臺機器上執行。此外,ansible-playbook函數或ansible執行會以非零退出,指示操做失敗。 然而,咱們不會限制錯誤發生時模塊的選擇。咱們能夠選擇忽略錯誤或者從新定義失敗條件。函數

忽略錯誤

任務的ignore_errors參數用於忽略錯誤。 這個參數是一個布爾值,意思是ansible能理解爲true的東西。工具

- name: broken website
  uri:
    url: http://notahost.nodomain
  ignore_errors: true

從新定義錯誤條件

ignore_errors參數是一個呆板的錘子。任務使用的模塊產生錯誤就會被忽略掉。另外,乍一看,輸出仍然像是一個錯誤,而且可能對操做員形成困惑,它們會嘗試找到出錯的緣由。一個更微妙的工具就是參數failed_when。這個參數就更加像一個精細手術刀,容許劇本做者對某個任務很是具體的指定構成任務的錯誤是什麼。這個參數執行一個產生布爾結果的測試,很是相似於when參數。若是在布爾的結果是事實,那麼任務就被認爲是失敗的。不然任務依然被認爲是成功的。測試

在與命令或shell模塊結合使用、以及在註冊執行結果的時候,failed_when參數就很是有用。不少程序在執行的時候能夠有很詳細的非零退出碼,意味着不一樣的事情;然而這些模塊都會將非零的退出碼認爲是失敗的。url

定義狀態改變

命令家族的特殊處理

抑制變化(Suppressing a change)

總結

目錄

相關文章
相關標籤/搜索