天天看點

Ansible Playbook詳解

Ansible Playbook詳解

Playbook 是一個由一個或多個 play 組成的檔案;play 是針對特定主機或主機組執行的一組有序的任務;每個 playbook 必須包含兩部分:

hosts: 運作 playbook 的一組主機

tasks: 需要在主機上運作的任務

除了這兩個必須選項,還有一些可選項選項,也可能需要包含在 play 中,如:

name: play 的名稱,在運作該 play 時,會在運作過程中顯示。

become: 與配置檔案中的 become 作用一樣,用于提權,當配置檔案中禁用提權時,你想要某個 play 使用提權的話,你可以在 play 中添加 become。

playbook 以 yaml 格式編寫的,通常以 yml 擴充名儲存。yaml 格式使用空格縮進,對于空格的數量沒有特别要求,但需要注意:

同一級别内的元素必須使用相同的縮進;

對于子項目,縮進必須比父項目多

編寫 playbook

Playbook 以 --- 開頭,用于标記檔案開始;

第二行的 name 為該 play 的名稱;

第三行的 hosts 表示将要運作該 play 的主機;

第四行的 tasks 表示該 play 将要執行的具體任務;

通過縮進,我們可以看出 tasks 一共分為三個部分,也就是三個子產品,每個子產品由一個 name 開表示該子產品的 name,雖然 name 是可選選項,但建議寫上,用來作為對該子產品執行任務的解釋說明,并且 name 的内容會在 playbook 執行此子產品時,顯示在執行過程中;

name 下面的是子產品的名稱,在該 play 的 tasks 中一共有三個子產品:

apt: 用于安裝軟體

copy: 用于複制檔案或内容

service: 用于操作 service,如啟動服務,重新開機服務等

我們可以通過 ansible-doc 來擷取更多關于子產品的資訊:

我們可以通過 ansible-doc -l 來列出所有子產品

列出的内容太多,我們可以通過 grep 進行篩選:如,我想查找關于 apt 相關的子產品

通過 ansible-doc Module_Name 擷取子產品相關的幫助說明

執行 playbook

由于我們配置了 become,是以在運作的時候會提示輸入 become 密碼;

在這裡,我們可以看到前面說的,在執行過程中會顯示 play 的名稱,告訴你現在執行的是那個 play;

每個 play 中會有一個預設的任務,就是擷取 facts 資訊,在 facts 資訊中會儲存你計算機的系統資訊;

然後是三個在 play 中定義的 task,在執行 tasks 時,會顯示目前所執行的 task 的名稱,以及執行的狀态,如果是 ok,則表示系統狀态沒有任何更改,如果是 changed,則表示系統狀态發生了改變;

在最後,還有一個關于該 playbook 執行結果的彙總,有多少個 changed,有多少個 failed,有多個 skipped 等等;

繼續閱讀