簡體   English   中英

廚師食譜 - 將完整目錄從食譜中的文件/默認位置復制到新位置

[英]Chef cookbook - copy complete directory from files/default location in cookbook to a new location

我是廚師的初學者。 任何人都可以請告知是否有辦法將食譜files/default目錄中的目錄復制到其他位置。

例如,我在files/目錄中有一個包含文件a.txtb.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM