ansible小技巧

  • 出現帶'u'的 unicode編碼, 在python裏 .encode()回去,尤爲是通過shell處理的,最好在shell中使用jinja2來處理一下python

    最好這種狀況在shell模塊使用jinja2的循環來代替shell的循環,從而得到一個列表stdout_linesshell

  • register的變量,後邊判斷是否認義不能用is defined要用|skipped這樣的方式,set_fact定義的變量能夠用is defined來判斷
  • ansible中的dict類型經過點 . 調用下一級字段最多三級,三級以後用中括號[ ]json

    例如: - debug: var=out.json.versions["values"]編碼

模塊的執行,不管是執行或不執行 都會有changed字段輸出, 執行成功與失敗也都會有changed的字段輸出,因此控制changed的狀態就是很是重要的事情
shell模塊執行成功就會changed: true ; 失敗則是false ; 執行命令失敗: 命令錯誤的狀況並不輸出failed的字段,由於要用is failed判斷, 執行命令正確可是結果返回碼不是0的狀況下有failed字段,可是執行成功或失敗都有rc字段,skipped則沒有rc字段 輸出。debug

register一個變量,不論該task是否被skipped,都會有defined狀態,因此register的變量不能以defined來作判斷,set_fact的能夠用defined來判斷。code

run_once時獲取到的變量值是能夠帶入其餘hosts的ip

相關文章
相關標籤/搜索