一千萬個為什麽

搜索

使用廚師資源從遠程下載多個文件



我想知道是否有資源從遠程使用廚師資源下載多個文件。我想用:

remote_file 'Download remote file' do
  path /opt/
  source http:///xxx
  mode '0644'
  action :create
end

...為一個文件。如果我想用不同的網址在同一個地方下載多個文件,該怎麽辦?或者我怎樣才能修改這個資源,使多個下載具有不同的URL?

這就是我在配方中添加屬性的方法:

node['file']['name'].each do |pkg|
    remote_file "path/plugins/#{pkg}" do
        source "node['file']['url']/#{pkg}"
        action :create
    end
end

屬性中

default['file']['name'] = %w(
    xx-2.0.jar
    xx-2.jar
    xx.jar
    )

轉載註明原文: 使用廚師資源從遠程下載多個文件

一共有 2 個回答:

那樣的事情呢?

%w{
        mysql-community-common-5.7.16-1.el7.x86_64.rpm
        mysql-community-libs-5.7.16-1.el7.x86_64.rpm
        mysql-community-client-5.7.16-1.el7.x86_64.rpm
        mysql-community-server-5.7.16-1.el7.x86_64.rpm
}.each do |pkg|
        remote_file "/tmp/#{pkg}" do
          source "https://s3.amazonaws.com/tmp/mysql/#{pkg}"
        end

       rpm_package pkg do
        source "/tmp/#{pkg}"
        action :install
      end
end

其他方式:

urllist = {
  { 'url': 'http://some.url1/', 'path': '/some/path1/', 'filename': 'some.file' },
  { 'url': 'https://some.url2/', 'path': '/some/path2/', 'filename': 'another.file'}
}

urllist.each do |urlinfo|
  remote_file "#{urlinfo['path']}/#{urlinfo['filename']}" do
    source "#{urlinfo['url']}/#{urlinfo['filename']}"
    owner 'someowner'
    group 'somegroup'
    mode 0755
  end
end

我為這種情況所做的是使用節點屬性哈希值作為鍵值映射,如下所示:

In attributes/default.rb

default['namespace']['files']['file1']='http://server1/path/source_fileX'
default['namespace']['files']['file2']='http://server2/path/source_fileY'

或者用散列符號表示:

default['namespace']['files']={'file1' => 'http://server1/path/source_fileX',
'file2'=>'http://server2/path/source_fileY'}

然後在配方中:

node['namespace']['files'].each do |filename,src|
  remote_file "/path/destinaton/#{filename}" do
    source src
    mode '0644'
    action :create
  end
end

通過這種方式,您可以利用其源代碼來映射文件,而節點屬性是散列結構。

如果當然可以設置完整路徑而不僅僅是文件名,並避免配方remote_file中的字符串插值。

(輸入電話,請原諒錯別字)