Chef - remote_directory的多个源

时间:2014-08-22 10:00:42

标签: chef

在puppet中,可以传递文件块的源数组,以便将目录从多个源复制到目标目录。

在chef的remote_directory源属性中,似乎只接受单个源。是否有任何其他属性可以将多个源传递到目录?

我想我可以一个接一个地拥有两个remote_directory资源并指定不同的源,但我不确定它是否会清除并重写具有最新资源内容的目录。

1 个答案:

答案 0 :(得分:0)

因为remote_directory资源意图是确保机器上的目录与定义它的cookbook中的目录相同(包括内容)。

因此,您不能在同一个食谱中为同一目录提供2个来源,并且将其重新分配到两个食谱中将最终覆盖第一个。

所以,它是一个与Puppet不同的范例。

在厨师中,您可能希望查看ark食谱以将zip / tar文件解压缩到特定目的地,这样您就可以从两个来源创建目录。

另一种方法是使用2个remote_directory然后使用执行块来合并它们。但是你仍然存在一个重叠内容的风险。

最后如果您有一些不同的文件,请在循环中使用remote_filedoc)来定义每个文件,如:

%W(file1.ext file2 file3.ext}.each do |f|
  remote_file f do
    source "<source path http/ftp>/#{f}"
    owner 'root'
    group 'root'
    mode "0644"
  end
end

你甚至可以为属性哈希中的每个文件设置带校验和的文件列表并迭代它,但我不确定这是你的意图,如果需要我会更新。