Ich habe eine Verzeichnisstruktur (Beispieldaten), die ich aus einem Chef-Rezept kopieren möchte. Die einzige Möglichkeit, dies zu tun, besteht darin, jedes einzelne Verzeichnis und jede einzelne Datei explizit zu erstellen:
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
...
Gibt es eine Möglichkeit, einfach eine gesamte Verzeichnisstruktur rekursiv aus dem Kochbuch zu kopieren? Die Angabe des Namens jeder Datei innerhalb des Rezepts erscheint redundant und fehleranfällig (dh wenn wir dem Baum eine Datei hinzufügen, aber vergessen, sie im Rezept zu referenzieren, wird sie nicht kopiert.)
Ich denke, eine Hack-Problemumgehung wäre, herauszufinden, wo alle Chef-Dateien auf den Zielcomputer kopiert werden, und eine, cp -r
aber gibt es etwas saubereres?
Oder gehe ich falsch vor?
remote_file
undremote_directory
sich ganz anders zu verhalten (geschweige denncookbook_file
undfile
). Was für ein verwirrendes Durcheinander ...file_cache_path teilt Ihnen mit, wo sich die Kochbücher auf dem Zielcomputer befinden
Daher müssen Sie nur das Verzeichnis Ihres Kochbuchs in file_cache_path mit Ihrem Zielspeicherort synchronisieren. Sie könnten das mit a
cp -r
, einem ruby_block mit FileUtils # cp_r oder einer anderen Klugheit tun , an die ich nicht gedacht habe.quelle