提供位于文件夹上的多个文件

时间:2017-03-09 11:00:03

标签: chef

我需要在配置机器的另一个目录下的目录下配置几个文件。

因此,我需要位于files/scripts/*.painless下的主厨库中的一些文件位于配置机器的文件夹(#{es_config_r.path_conf}/scripts/)上。

有没有办法做到这一点,或者我需要逐个提供?

如果我解释得那么好,我不会......

2 个答案:

答案 0 :(得分:2)

要从您的食谱中放置files/文件夹中的所有文件,您可以使用remote_directory资源,如下所示:

remote_directory "#{es_config_r.path_conf}/scripts/"

应该已经完成​​这项工作,因为你在两边都使用了文件夹名scripts/

为了使示例更加清晰,您可以将无痛脚本放在files/scripts/painless/中。可以按如下方式配置此文件夹的内容:

remote_directory "#{es_config_r.path_conf}/scripts/" do
  source "scripts/painless"
end

答案 1 :(得分:-1)

您可以使用资源cookbook_file部署食谱中包含的文件。

使用简单的循环,您可以部署该目录中的所有文件,例如:

%w(foo bar zaz).each do |script|
  cookbook_file "/path/to/#{script}" do
    source "scripts/#{script}"
    owner 'MrBean'
    group 'ITV'
    mode '0754'
  end
end

当然,假设您在目录your_cookbook/files/scripts/下的食谱中有脚本。

其他更优雅的选项是将脚本文件列表保留为您的食谱的属性,因此您可以在每台计算机的基础上部署dinamically脚本。 (例如,不保留与在mysql中管理httpd服务器相关的脚本)