Chef infra 使用Chef复制远程目录

Chef infra 使用Chef复制远程目录,chef-infra,Chef Infra,我想使用chef recipe将目录从远程服务器复制到我的客户端。“远程文件”资源可用于复制文件。远程目录可以在cookbook文件中本地复制目录。我找不到复制远程目录递归的方法。我想做如下事情: 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

我想使用chef recipe将目录从远程服务器复制到我的客户端。“远程文件”资源可用于复制文件。远程目录可以在cookbook文件中本地复制目录。我找不到复制远程目录递归的方法。我想做如下事情:

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
该资源支持HTTP和FTP协议。虽然遍历远程目录中包含的文件是可行的,但这并不简单

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

所以。。希望这能在某种程度上解释为什么chef中默认情况下远程目录资源不可用

但是。。希望没有丧失。这里有一些建议(我相信还有很多其他复制文件系统的方法)

下载并展开一个tarball 将远程目录打包为压缩的tar包

tar cf mydir-0.1.tar /data/mydir
gzip mydir.tar
这是我最喜欢的管理档案的方法

ark 'mydir' do
  url 'http://host/filesystems/mydir-0.1.tar.gz'
  version '0.1'
  checksum 'XXXXXXX'
  path '/data'
end
我还喜欢扩展的tarball版本化的事实。把这看作是一个穷人的快照:-)

远程同步 我们提供了一个允许在远程机器上设置rsync服务器的可用配置

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


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

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

remote_file 'path where remote file will be downloaded' do
            source "remote_file url"
            action :create
end
我们也可以使用远程_文件的path属性指定路径

            path "path where remote file will be downloaded"

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