我曾經使用Puppet很多,從0.x到1.0的版本,然後改變了工作,但現在我又回到了它。木偶中的Hiera對我來說是新手(以及其他一些東西)。根據主機名通過Hiera爲節點分配一個類
我正確的理解,根據與Hiera匹配的主機名(或證書名稱)模式將類分配給節點組基本上是不可能的?
例如,如果主機是類似於「ntp1.foo.com」的,我就習慣於分配ntp服務器類。在site.pp
中定義直接node
的定義非常簡單,我試圖將此概念轉化爲基於Hiera的世界。我有Hiera分配其他類,並希望將所有這些任務合併到一個地方。
我發現這樣做的唯一方法是通過一些非Hiera手段設置參數並在Hiera中使用它的值來匹配路徑。舉例來說,在我的enc
腳本我出口的參數是這樣的:
echo "parameters:"
if [ ... ]; do echo " ntpRole: server; else echo " ntpRole: client"; fi
和Hiera我會做這樣的事情:
- "roles/ntp-%{ntpRole}"
我想人們也可以通過自定義其實做到這一點。
這工作,但似乎像一個kludge。有更好的/推薦的選擇嗎?與此
的一個問題是,每一個節點必須有一個值(一切都被分配了一個ntp- 東西類)。這適用於NTP,因爲所有的機器都是NTP客戶端或服務器,但對於存在的東西它不。
例如:一個web服務器角色。有些機器不會是Web服務器,所以我不想包含那個類,但是對於其他類,我並不想在每個節點文件中維護它,並且不想真正想要在任何地方都有空的*-none
角色類別(例如web-none
與web-server
)。我想要所有名爲www*
的機器或基於其他標準來加載roles/web
類。這可以與Hiera完成嗎?
我們對此使用外部自定義事實,因此事實將具有該節點屬於哪個角色的邏輯,並且在您的hiera中,可以使用該事實來包含角色類。 – Walid