Chef-Solo

具有長期執行建構的主廚和軟體包

  • April 19, 2012

我正在試驗廚師並將我的伺服器配置移到它上面。我遇到的一個障礙是如何處理必須手動編譯和安裝(配置、製作、製作安裝)但需要永遠編譯的軟體包。我不想僅僅因為依賴項需要永遠建構就阻礙伺服器啟動時間。

具體案例:wkhtmltopdf。具有完整功能的 wkhtmltopdf 需要一個自定義/修補的 qt,它需要永遠編譯。

以下是我看到的選項: 1)在每次啟動時使用 chef 編譯包(缺點:啟動伺服器需要永遠) 2)編譯包一次,tar 和它們。然後只需下載軟體包並安裝它。(缺點:不適用於具有不同作業系統/硬體的機器) 3)編譯一次包並將其保存在基礎映像中並由廚師(廚師:包不在廚師中)

有任何想法嗎?

雖然許多共享的 Chef 食譜確實是從原始碼建構的,但這並不是因為它必然是在系統上獲取軟體的最佳途徑。它通常表示“可能工作的最簡單的事情(但未優化)”或“(食譜)作者沒有時間/資源來維護公共包儲存庫。”

“常見做法”(*) 是為您的平台建構和安裝本機軟體包,並將它們託管在內部儲存庫中。如果您在一家樂於分享的公司工作,那麼將這些內容貢獻給上游或使用公共託管的儲存庫(如 Ubuntu PPA)也可能是一種選擇。

該方法的問題是每個主要發行版對包管理有不同的看法,因此它們的工作方式略有不同。這就是Jordan Sissel 的“fpm”非常方便的地方。雖然它現在僅適用於 RPM、DEB 和 Solaris,但計劃支持其他打包系統。通過在 Jenkins 的建構步驟中呼叫所需的 fpm 命令,您可以進一步將 fpm 連接到Jenkins等持續集成伺服器中。

建構好要部署的包後,您需要將它們放在儲存庫中。如果您不能通過 PPA 公開分享,那麼我建議使用 Chef 建構包 repo 主機。如果您使用的是 Debian/Ubuntu,reprepro通常用於製作 apt 儲存庫。對於 RPM/Yum,mrepo 很常見,儘管我不知道有什麼食譜可以設置它。然後您可以使用aptyum食譜在您的其他節點上設置儲存庫。

另一種可能是更簡單的選擇的方法是建構軟體,將其打包並粘貼到您的節點可以訪問的 HTTP 伺服器上,然後使用 Bryan Berry 的ark cookbook 的資源來檢索和解壓縮它。

(*) 我說普通是因為我在這裡忽略了“最好”:)

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