如何使用 puppet 递归镜像目录及其内容?

tro*_*ine 14 puppet

假设我有一个带有files/etc/foo/{conf0, conf1, conf2, conf3, etc}. 当它们的数量很少时,放置这些文件中的每一个都很简单:

file { 'conf0':
    path => '/etc/foo/conf0',
    ensure => true,
    source => 'puppet:///.../etc/foo/conf0',
}
Run Code Online (Sandbox Code Playgroud)

并重复。但是涉及到相当多的重复,如果有多个配置文件,维护起来很乏味。我想确保它files/etc/foo/被镜像到给定的路径上。也就是说,

file { 'etc foo confs':
   path => '/etc/foo',
   ensure => recursive,
   source => 'puppet:///.../etc/foo',
}
Run Code Online (Sandbox Code Playgroud)

会创建/etc/foo/conf0/etc/foo/conf1等等。这可能吗?

Sha*_*den 22

当然 -files类型有一个recurse选项(recurselimit如果你想限制它进入目录的深度)。

file { 'etc foo confs':
   path => '/etc/foo',
   source => 'puppet:///.../etc/foo',
   recurse => true,
}
Run Code Online (Sandbox Code Playgroud)

  • 如果这样做,要记住的另一件事是 Puppet 必须保持连接的文件数量。很快就会耗尽文件描述符并且 puppet 开始遇到麻烦。在尝试执行此任务之前,我遇到了这个问题。 (5认同)