Puppet:分别管理所有者/组/模式属性的递归

时间:2014-08-28 14:45:22

标签: puppet

我需要编写一个Puppet脚本来管理目录/foo/bar,以便:

  1. /foo/bar上的文件模式为777,但目录中所有内容的权限均不受Puppet管理。
  2. /foo/bar上的所有者/群组及其中的所有内容均为baz
  3. 也就是说,第一个要求是非递归的,但第二个属性是递归的。

    Puppet提供单个recursive属性,同时影响ownergroupmode的行为。这意味着我无法使用单个资源声明指定所需的行为。

    我尝试使用两个资源声明,但后来我收到错误

    Error: Duplicate declaration: File[/foo/bar] is already declared in file /my/puppet/file.pp at line XX; cannot redeclare
    

1 个答案:

答案 0 :(得分:1)

是的,这不起作用。请注意,Puppet不是脚本引擎,而是一种模拟所需状态的工具。

因此,您必须决定如何管理目录:作为单个文件系统条目(recurse => false)或整个树(recurse => true)。在后一种情况下,Puppet将始终管理您传递值的所有属性。

在您的情况下,您可能不得不回到通过不同的资源管理目录本身权限的解决方法,可能是exec资源调用chmod,而不管{ {1}}资源。后者不得在此星座中传递file的值,否则这两个资源将始终相互作用。

这并不理想,但Puppet没有足够的能力来满足您的具体要求。