【问题标题】:Copy a remote directory using Chef使用 Chef 复制远程目录
【发布时间】:2016-11-25 17:23:48
【问题描述】:

我想使用厨师食谱将目录从远程服务器复制到我的客户端。 'remote_file' 资源可用于复制文件。 remote_directory 可以在说明书文件中本地复制目录。我找不到复制远程目录递归的方法。我想做如下的事情:

remote_file/direcotry 'Copying the folder' do
        path 'c:/repo/OpenOffice4.1.0'
        source 'file:////10.132.17.53/e$/CHEFREPO/OpenOffice 4.1.0 (en-US) Installation Files'
end

【问题讨论】:

  • 我认为您可以压缩原始目录并使用remote_installark 获取并解压缩它。您也将节省时间和带宽。如果没有,我有一个安装和执行资源的解决方法。
  • @Tensibai Oops 没有看到您的评论。使用“方舟”的伟大思想:-)
  • @MarkO'Connor 没问题 ;) 你的回答比我的评论清楚得多

标签: chef-infra


【解决方案1】:

remote_file 资源支持 HTTP 和 FTP 协议。虽然遍历远程目录中包含的文件是可行的,但这并非易事。

另一个考虑因素是安全性。 remote_file 资源允许为远程文件指定校验和,以便厨师能够确定下载了正确的文件。

所以.. 希望这有助于解释为什么在 Chef 中默认情况下远程目录资源不可用。

但是.. 希望并没有失去。以下是一些建议(我敢肯定还有很多其他复制文件系统的方法);

下载并展开压缩包

将远程目录打包为压缩的tar包

tar cf mydir-0.1.tar /data/mydir
gzip mydir.tar

ark cookbook 是我最喜欢的档案管理方式

ark 'mydir' do
  url 'http://host/filesystems/mydir-0.1.tar.gz'
  version '0.1'
  checksum 'XXXXXXX'
  path '/data'
end

我也喜欢扩展的 tarball 版本化这一事实。把它想象成一个穷人的快照:-)

rsync

我们有一个rsync cookbook 可用,它允许在远程机器上设置一个rsync 服务器。

也可以通过 ssh 运行 rsync,但这需要提前设置 SSH 密钥。

这是所有同步解决方案如何设置身份验证的问题。

【讨论】:

    【解决方案2】:

    在 .rb 文件中添加以下代码:

    remote_file 'path where remote file will be downloaded' do
                source "remote_file url"
                action :create
    end
    

    我们也可以使用 remote_file 的 path 属性来指定路径。

                path "path where remote file will be downloaded"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      相关资源
      最近更新 更多