Ansible - 創建 Ansible inventory 主機清單
Contents
Ansible 中的 Inventory 主機清單是執行 Ansible 的必要元素之一, 藉由該清單可以告訴 Ansible 哪些機器歸它所控制,完成自動化部署工作。
1. inventroy 格式
inventory 格式可以為 Yaml 或是 INI 格式, 對於初學者來說手動撰寫 INI 格式相對較為容易 ( static inventory ),不過如果有上百上千台機器就不適合手動一一產生,需要透過程式拉取 AD 、LADP 等機器資訊並自動產生 Yaml 格式。
INI 格式範例
|
|
Yaml 格式範例
|
|
Tip
多台連續機器可以使用,[START:EDN]來省略,如
server[a:f].lab.example.com
2. inventory 架構
主機清單可以區分為下列幾種群組:
- all ( 表示所有機器 )
- group ( 每一個群組可以包含一個或多個機器 )
- ungrouped ( 未被分類到群組 )
|
|
- localhost 未加入任何群組所以是 ungrouped
- 總共有三個群組 dev 、 prod 、 test ,同一台機器可以包含在不同群組內
- webservers 為父群祖,其中 dev 與 prod 都為 webservers 的子群組
IMPORTANT
all 是預設群組,不用特別填寫也會存在
只要沒有群組的都會自動被編列為 ungrouped
只要沒有群組的都會自動被編列為 ungrouped
3. 驗證 inventory 是否有效
撰寫一個 inventory 名稱可以隨意命名,不過通用都會寫成 inventory ,可以讓接手維護的人能更直覺看出,使用 ansible 指令可以檢查 inventory 正確性 ( 僅檢查語法,被控端機器有沒有實際運作不會在這一步驟檢查 )。
|
|
檢查 inventory 內的所有群組
|
|
也可以針對群組來檢查
|
|
4. LAB 練習
4.1 LAB
嘗試將下列機器列表轉撰寫成 ini 格式的 inventory 清單,並使用 ansible 語法檢查 production 群組總計有幾台 ?
HOSTNAME | 目的 | 區域 | 環境 |
---|---|---|---|
servera.lab.example.com | webserver | Taipei | development |
serverb.lab.example.com | webserver | Taipei | testing |
serverc.lab.example.com | webserver | Kaohsiung | production |
serverd.lab.example.com | webserver | Taichung | production |
另外 Taipei 及 Taichung 是 BU 的子群組。
4.2 LAB 解答
- inventory 參考解答
|
|
- production 群組計有兩台
|
|
5. 小結
掌握 inventory 主機清單撰寫才能有效的控管所屬的機器,是 Ansible 很重要的必修課題之一。
如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!