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
...
クックブックからディレクトリ構造全体を単純に再帰的にコピーする方法はありますか?レシピ内の各ファイルの名前を指定すると、冗長でエラーが発生しやすくなります(つまり、ツリーにファイルを追加したが、レシピでそれを参照し忘れた場合、コピーされません)。
ハックの回避策は、すべてのchefファイルがターゲットマシンにコピーされる場所を見つけてcp -r
しかし、よりクリーンなものはありますか?
それとも私はこれを間違った方法で行っていますか?
remote_directory
リソースを使用しないのはなぜですか。それはまさにそのためのものです。
file_cache_path は、クックブックがターゲットマシンのどこにあるかを通知します
したがって、file_cache_path内のクックブックのディレクトリをターゲットの場所に同期する必要があります。 cp -r
、 FileUtils#cp_r を使用したRuby_block、または私が考えていない他の賢さ。