在 Chef 中复制整个目录结构

Ste*_*ett 6 directory ruby chef

我有一个目录结构(示例数据),我想从 Chef 配方中复制它。似乎唯一的方法是显式创建每个单独的目录和文件:

directory "/mnt/data/experiment1/dataset1" do
   recursive true
   only_if { node.chef_environment == "dev" }
end


directory "/mnt/data/experiment1/dataset2" do
   recursive true
   only_if { node.chef_environment == "dev" }
end

directory "/mnt/data/experiment2/dataset1" do
   recursive true
   only_if { node.chef_environment == "dev" }
end


directory "/mnt/data/experiment1/dataset2" do
   recursive true
   only_if { node.chef_environment == "dev" }
end


cookbook_file "/mnt/data/experiment1/dataset1/testfile1.txt" do
   owner "atom"
   group "atom"
   mode "0644"
   source "sampledata/experiment1/dataset1/testfile1.txt"
   only_if { node.chef_environment == "dev"}
end

...
Run Code Online (Sandbox Code Playgroud)

有没有办法简单地从食谱中递归复制整个目录结构?在配方中指定每个文件的名称似乎是多余且容易出错的(即,如果我们将一个文件添加到树中但忘记在配方中引用它,它将不会被复制。)

我想一个 hack 解决方法是找出所有厨师文件被复制到目标机器上的位置并执行一个cp -r但是有更干净的东西吗?

还是我以错误的方式解决这个问题?

Mic*_*eld 10

为什么不使用remote_directory资源。它正是为此而设计的。

请参阅:https : //docs.chef.io/resource_remote_directory.html

  • 这令人困惑。对此有很多讨论。无论如何 - 你应该检查 Puppet。那是“凌乱”的同义词:) (3认同)
  • 看起来不错 - 它是新的吗?此外,似乎`remote_file` 和`remote_directory` 的行为完全不同(更不用说`cookbook_file` 和`file`)。多么混乱的混乱...... (2认同)