Puppet
使用 Puppet 部署分佈式應用程序 - 建議?
我正在考慮將我們的部署過程遷移到使用 Puppet。我首先部署了我們用於系統的第三方應用程序,其中包括由 Zookeeper 集成編排的 Solr Cloud。
使用內置 Zookeeper 部署 Solr 雲相當簡單,但是如果我想使用單獨的 Zookeeper 集成,那麼我需要在配置中使用以下關鍵行部署 Zookeeper:
server.1=ip1:2888:3888 server.2=ip2:2888:3888 server.3=ip3:2888:3888
(例如)。鑑於我不能對節點的順序做出任何假設,並且我想保持這一切都是基於 Puppet 的:這樣做我應該看什麼?
我是否需要使用模板和一些 Hiera 查找,並在我的 Hiera 配置中定義所有 Zookeeper 伺服器?或者有沒有一種方法可以讓我不提前指定所有節點的位置,並讓它們相互辨識(可能使用自定義事實)?
我想盡量減少我必須編寫的特定於站點的配置的數量,所以如果我可以指定“這個節點需要 zookeeper 模組”並且它會自動找到任何其他擁有 zookeeper 模組的節點,那就太好了。
來自做過類似事情的系統管理員的任何建議將不勝感激!
使用 Hiera 是正確的方法,您可以通過使用PuppetDB和PuppetDB Hiera 後端來實現您想要的動態特性。
這允許您在 Hiera YAML 文件中包含以下內容:
zookeeper::servers::_nodequery: ['Class[Zookeeper]', 'ipaddress']
這將為 PuppetDB 知道的所有機器返回一系列
$::ipaddress
事實,其中 Zookeeper 類作為其目錄的一部分。然後,您可以將此查詢的結果用作其他類的參數。