[英]How to avoid chef-solo to copy files from site-cookbook to cookbook folder?
[英]Chef cookbook - copy complete directory from files/default location in cookbook to a new location
我是廚師的初學者。 任何人都可以請告知是否有辦法將食譜files/default
目錄中的目錄復制到其他位置。
例如,我在files/
目錄中有一個包含文件a.txt
和b.txt
的目錄結構,如下cookbook_name/files/default/folder-name/[a.txt,b.txt]
。 我希望他們兩個文件都是一個位置/home/user/work/somelocation/folder-name/[a.txt,b.txt]
我已經嘗試過cookbook_file資源如下:
cookbook_file '/home/user/work/somelocation/' do
source ['folder-name']
mode "0644"
action :create
end
和
cookbook_file '/home/user/work/somelocation/' do
source ['folder-name/a.txt',''folder-name/b.txt'']
mode "0644"
action :create
end
我知道通過循環在任意目錄之間復制文件的其他方法,但我很想知道是否有更優雅的方式來處理目錄,類似於 cookbook_file 如何處理來自食譜files/default
目錄中標准文件夾的files/default
。
remote_directory允許您將整個目錄復制到您選擇的位置。 例如:
remote_directory "/etc/some_target_directory" do
source 'local_directory' # <-- this is your directory in files/default/local_directory
files_owner 'root'
files_group 'root'
files_mode '0750'
action :create
recursive true
end
進一步閱讀: https : //docs.chef.io/resource_remote_directory.html
AFAIK 沒有“好/干凈”的方法來復制食譜中包含的所有文件。
為了創建多個文件,您可以應用簡單的 ruby 邏輯來循環這些文件:
['a.txt', 'b.txt'].each do |file|
cookbook_file "/home/user/work/somelocation/#{file}" do
source "folder-name/#{file}"
mode "0644"
end
end
這將創建多個cookbook_file
資源( @jamesgaddum所說的)。
PS files/default/
的default/
部分是可選的,因為有幾個 Chef 版本。
不太可能因為cookbook_file
使用校驗和來比較現有文件和新文件,因此每個文件都需要唯一的cookbook_file
資源。
我面臨着一個類似的問題,而 ATM 接近我的解決方案是,在一個配方中run_context.cookbook_collection[<cookbook-name>].file_filenames
是一個數組,其中包含<cookbook>/files
下所有文件的完整路徑<cookbook>/files
例如在我的配置中,這樣的目錄:
files/
default/
foo.txt
bar.txt
baz/foo.txt
它返回一個目錄,如
[
"/opt/kitchen/cache/cookbooks/cookbook/files/default/foo.txt",
"/opt/kitchen/cache/cookbooks/cookbook/files/default/bar.txt",
"/opt/kitchen/cache/cookbooks/cookbook/files/default/baz/foo.txt"
]
但這對我來說不是很有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.