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 ...
有沒有辦法簡單地從食譜中遞歸複製整個目錄結構?在配方中指定每個文件的名稱似乎是多餘的並且容易出錯(即,如果我們將文件添加到樹中但忘記在配方中引用它,它將不會被複製。)
我想一個黑客解決方法是找出所有廚師文件被複製到目標機器上的位置並做一個
cp -r
但是有更清潔的東西嗎?還是我以錯誤的方式解決這個問題?
為什麼不使用
remote_directory
資源。它正是為此而設計的。
file_cache_path會告訴你說明書在目標機器上的位置
因此,您只需將 file_cache_path 中的食譜目錄同步到您的目標位置。您可以使用 FileUtils #cp_r
cp -r
使用ruby_block或其他一些我沒有想到的聰明來做到這一點。