厨师和软件包与长期运行的版本

我正在尝试与厨师和我的服务器configuration转移到它。 我遇到的一个障碍是如何处理必须手动编译和安装的软件包(configure,make,make install),但是要永远编译。 我不想阻止服务器启动时间,只是因为一个依赖需要永远构build。

具体用例:wkhtmltopdf。 具有完整function的Wkhtmltopdf需要一个自定义/修补的QT,它需要FOREVER编译。

下面是我看到的选项:1)在每次启动时使用chef编译软件包(Con:永远启动服务器)2)编译软件包一次,tar和它们。 然后下载包并安装它。 (Con:不适用于具有不同操作系统/硬件的机器)3)编译一次,只保留在一个基本的图像和厨师(厨师:包不是厨师)

有任何想法吗?

虽然许多共享的厨师食谱从源头上build立,但这并不是因为它是在系统上获得软件的最佳途径。 这往往表明“最简单的事情,可能会工作(但没有优化),”或(“(食谱)作者没有时间/资源来维护公共软件包的存储库。

“常规”(*)是为您的平台构build和安装本地软件包,并将它们托pipe在内部存储库中。 如果你在一家友好的公司工作,那么向上游公司或使用公共托pipe的存储库(如Ubuntu PPA)提供服务也是一个select。

这个方法的问题是每个主要的发行版对于包pipe理都有不同的看法,所以它们的工作方式略有不同。 这就是约瑟夫·塞塞尔的“fpm”非常方便的地方。 虽然它现在只适用于RPM,DEB和Solaris,但是计划支持其他打包系统。 您可以通过调用Jenkins中构build步骤所需的fpm命令,进一步将fpm钩入持续集成服务器(如Jenkins)。

一旦你build立了你想部署的包,你需要把它们放在一个存储库中。 如果你不能通过PPA公开分享,那么我build议与主厨一起build立软件包回购主机。 如果你使用的是Debian / Ubuntu, reprepro是制作apt库的常用工具。 对于RPM / Yum来说,mrepo是很常见的,但是我不知道有一本食谱来设置它。 然后,您可以使用apt或yum cookbooks在其他节点上设置存储库。

另一种可能更简单的方法是构build软件,将其安装在HTTP服务器上,然后使用Bryan Berry的ark cookbook的资源进行检索和解压缩。

(*)我常说,因为我在这里展示“最好”:)

厨师/ puppet等人的正确方法是将你的软件打包成你自己的本地打包格式,并将其包含在你的软件仓库中,然后把这个软件包取出来。