1

最近我在流浪环境中部署一些基于厨师的食谱时遇到了一个问题。我尝试安装的组件之一(percona xtradbcluster)暂时不可用(percona ubuntu 存储库包含错误的构建)。尽管 Percona 的人在周末解决了这个问题,但我暂时无法部署我的测试设置,因为没有真正的替代方法来解决它。

这让我想到:在部署时,我依赖于互联网上可用的大量“东西”:ubuntu repos 3rd 方 repos、这些 repos 中可用的包、可用的 ruby​​ gem 等等......任何其中一些可能(暂时)不可用,因此无法部署。

我的问题:是否可以缓存我所有的依赖项?这是值得的,还是我应该忍受偶尔的故障?你如何处理这个问题?

谢谢!缺口。

4

2 回答 2

1

使用 Opscode 的“apt”食谱在您的一个系统上设置 apt 缓存,然后其他系统可以将其用于其 apt 源。

在要成为缓存的系统上,放入recipe[apt::cacher-ng]其运行列表(或使用角色)。

在所有其他系统上,放入recipe[apt::cacher-client]运行列表(例如,在适用于所有系统的“基础”角色中)。如果您使用 Chef Solo,则需要将属性设置node['apt']['cacher_ipaddress']为缓存系统的 IP。

然后所有安装的包都将被缓存,其他系统将从缓存中安装。

于 2012-10-04T16:14:03.193 回答
0

Chef 实际上为您做了一些缓存,但仅针对remote_file资源。但是当涉及到包安装时,Chef 完全依赖包提供者,这意味着它运行 shell 命令调用apt-get install(或 yum 或 smth.else)并且 apt 可以缓存一些下载的包,但它不依赖于任何方式的厨师。

而且我不知道有什么可以帮助预加载一些远程内容的。我们在公司做的唯一一件事就是为更大的文件(>500Mb)和我们非常确定在多台机器上需要的文件创建了一些本地文件存储。(例如,我们到处都安装了 java 容器)然后我们在我们的食谱中提供到本地商店的链接,新机器将从那里下载它。

唯一想到如何改进的是:

您可以根据remote_file资源创建自己的 LWRP 。当他们收到一些要下载的 url 或包名称时,他们会以某种方式首先尝试从本地存储库下载它,只有当他们失败时,他们才会尝试使用远程 url 进行下载。但是匹配远程 url 和本地存储库 url 可能会出现问题。

于 2012-10-03T19:51:17.547 回答