Chef

同一“環境”中多個節點“集群”的廚師屬性

  • May 2, 2016

如何在 Chef 中組織屬性以支持環境中幾乎相同伺服器的多個隔離集群?

我的組織,我假設有很多類似的,有幾個暫存實例。不同的登台實例需要使用不同的數據庫連接和主機名以及類似的小東西,但除此之外它們是相同的。在一個 staging 實例 = 1 個伺服器的世界中,您可以輕鬆地將 staging 特定屬性放入名為 staging 的 Chef 環境中,並且您可以在節點本身上定義實例特定屬性。

但是,當每個登台實例都不止一台伺服器時會發生什麼?假設我們在不同的節點上有幾個不同的服務,它們相互通信並形成一個應用程序的實例。

我無法為這些實例中的每一個創建一個環境,​​因為一個節點只能位於 1 個環境中,並且我不想複製它們之間的所有共享屬性。同樣,我不想在每個節點上複製所有實例/集群特定屬性。

我應該為每個只有實例/集群特定配置的實例創建一個角色嗎?我應該為這些實例中的每一個創建一個食譜嗎?

我一直在瀏覽部落格文章和東西,但沒有找到任何解決這個問題的方法。

這裡沒有對錯。使用不同的角色(您可以分配多個)可能是更容易的選擇之一。

如果您想在暫存環境中測試新的說明書版本,在將它們推廣到生產環境之前,環境說明書模式將為您提供這樣做的方法。

但是由於 chef 只​​是程式碼,您幾乎可以在程式碼中做任何事情,例如,您還可以使用主機名定義環境(不是以 chef 術語),然後 chef 讀出並使用為該環境指定的屬性集(在廚師中,您可以在環境、角色、食譜中指定這些集合……)。

引用自:https://serverfault.com/questions/773961