Chef infra Chef cookbook-将完整目录从cookbook中的文件/默认位置复制到新位置

Chef infra Chef cookbook-将完整目录从cookbook中的文件/默认位置复制到新位置,chef-infra,Chef Infra,我是厨师的初学者。任何人都可以告诉我是否有办法将cookbook的文件/default目录中的目录复制到其他位置 例如,我有一个目录结构,在files/目录中有文件a.txt和b.txt,如下cookbook\u name/files/default/folder name/[a.txt,b.txt]。我希望这两个文件都是一个位置/home/user/work/somelocation/foldername/[a.txt,b.txt] 我尝试了以下资源: cookbook\u文件'/home/u

我是厨师的初学者。任何人都可以告诉我是否有办法将cookbook的
文件/default
目录中的目录复制到其他位置

例如,我有一个目录结构,在
files/
目录中有文件
a.txt
b.txt
,如下
cookbook\u name/files/default/folder name/[a.txt,b.txt]
。我希望这两个文件都是一个位置
/home/user/work/somelocation/foldername/[a.txt,b.txt]

我尝试了以下资源:

cookbook\u文件'/home/user/work/somelocation/'do
源['folder-name']
模式“0644”
行动:创建
结束


我知道通过循环在任意目录之间复制文件的其他方法,但我很想知道是否有更优雅的方法来处理目录,类似于cookbook_文件如何处理cookbook的
files/default
目录中标准文件夹中的文件。

不太可能,因为
cookbook_文件
使用校验和来比较现有文件和新文件,因此,每个人都需要一个独特的
cookbook\u文件
资源。

没有“好/干净”的方法来复制cookbook中包含的所有文件

为了创建多个文件,您可以应用简单的ruby逻辑来循环这些文件:

['a.txt','b.txt'].每个do文件|
cookbook_file”/home/user/work/somelocation/#{file}do
源“文件夹名/#{file}”
模式“0644”
结束
结束
这将创建多个
cookbook\u文件
资源(正在讨论的内容)


另外,
files/default/
中的
default/
部分是可选的,因为有两个Chef版本。

远程目录允许您将整个目录复制到您选择的位置。例如:

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           
remote\u directory”/etc/some\u target\u directory“do

source'local_directory'#我面临着一个类似的问题,我几乎可以找到一个解决方案,那就是在配方
run_上下文中。cookbook_集合[]。file_filenames
是一个数组,其中包含
/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"
]

但是这对我来说不是很有用

虽然
源代码
接受一个数组,但您不能使用它来指定要复制的多个文件,而是阅读。有没有办法将
文件/默认值
更改为类似
文件/非默认值
的内容?是的,您可以使用
文件/
下面的任意路径(
default/
甚至可以省略,因为有两个版本)。还有更多。有没有办法将
文件/default
更改为类似
文件/not default
[
  "/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"
]