使用Chef复制远程目录

时间:2014-08-21 11:52:24

标签: chef

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

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

2 个答案:

答案 0 :(得分:1)

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

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

所以..希望这可以解释为什么远程目录资源默认在chef中不可用。

但是......希望不会丢失。以下是一些建议(很多其他方法来复制文件系统我敢肯定);

下载并展开tarball

将远程目录打包为压缩的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密钥。

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

答案 1 :(得分:0)

在.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"