在 Puppet 中 Node 有許多概念要先釐清,這篇記錄 Node 管理中需要了解的事項:
- node 會在 site.pp 內找到符合的 node 名稱進行編譯,如果沒有則放棄編譯並失敗。
- 只會 match 一筆 node 資訊並且進行編譯。
- 如果有兩筆以上符合的 node 資訊僅會編譯一筆並佈署,但官方並不保證會優先使用哪一筆資料。
- Puppet 內 node 定義為句點分隔,如 www.example.com,則會先以 www.example.com -> www.example -> www 的順序尋找。
- 如果 node 找不到任何資訊,最後會尋找是否有 node default 來進行佈署。
- node inherits 的方式在 Puppet 4.0 之後被棄用。
在用 Puppet 管理後,當機器數量大於一定的數字,你的 site.pp 將會面臨難以維護的狀況,所以必須使用官方提供的 ENC (External Node Classifiers) 來配置,ENC 是使用 yaml or JSON 的格式來撰寫。
除了 ENC 以外,官方還推薦使用 Hiera,Hiera 主要用於設定你的屬性值,當你需要針對不同環境要有許多相同、不同的環境 Hiera 就是很好用來處理這個工作,在 Puppet 3.0 之後官方已經將 Hiera 內建在 Puppet server 內了,在 4.9 之後使用的是 Hiera 5 版本。