Ruby 在文本文件中包含软件包列表

Ruby 在文本文件中包含软件包列表,ruby,debian,chef-infra,chef-recipe,Ruby,Debian,Chef Infra,Chef Recipe,我不熟悉chef并计划灾难恢复计划,因此将在chef cookbooks中包含我的所有配置文件和系统上安装的软件包列表。我想知道如何在安装软件包的配方中提到一个文本文件 我带了一份包裹清单 dpkg --get-selections > packages.txt. 我想厨师阅读从该列表中的一个包一个接一个,并安装它。如果有人能在这方面指导我就太好了 谢谢, Swaroop。我不知道如何从食谱中读取文件。但您可以在一个配方中使用以下代码安装多个软件包: dpkg --get-selections

我不熟悉chef并计划灾难恢复计划,因此将在chef cookbooks中包含我的所有配置文件和系统上安装的软件包列表。我想知道如何在安装软件包的配方中提到一个文本文件

我带了一份包裹清单

dpkg --get-selections > packages.txt. 我想厨师阅读从该列表中的一个包一个接一个,并安装它。如果有人能在这方面指导我就太好了

谢谢,
Swaroop。

我不知道如何从食谱中读取文件。但您可以在一个配方中使用以下代码安装多个软件包:

dpkg --get-selections > packages.txt.
%w{
package-1
package-2
}.each do |pkg|
  package pkg
end
可以帮你完成任务。它检查系统并从中生成厨师食谱


免责声明:我还没有试过。但是它看起来很有趣。

为什么不使用ruby从本地机器上的文件中获取列表呢?那么你必须将文件放到磁盘上,当然。在ruby应该执行此操作之前,在编译时运行远程文件或cookbook文件。我想知道在ruby_块中声明Resources包是否有效。总有一天我会尝试一下,使用纯Ruby,您可以在从某处下载文件后随意读取该文件,并定义类似于上面代码的资源。这发生在编译时。在一次chef运行期间,从远程_文件读取将不起作用。。。。除了您[在运行时添加资源],我不确定您是否采取了正确的方式。你最好的办法是用cookbooks重新创建机器,根据你的需要安装和配置cookbooks,一旦你有了一个完全自动化的正确副本,你就可以删除实际的服务器并用你的cookbooks重新构建它。我同意@Tensibai。这不是接近厨师的好方法。。。你应该考虑复制状态,而不是进程。当然,也许一个用于灾难恢复的备份和一本用于设置机器的新厨师烹饪书是更聪明的解决方案。