我需要编写一个Puppet脚本来管理目录/foo/bar
,以便:
/foo/bar
上的文件模式为777
,但目录中所有内容的权限均不受Puppet管理。/foo/bar
上的所有者/群组及其中的所有内容均为baz
。也就是说,第一个要求是非递归的,但第二个属性是递归的。
Puppet提供单个recursive
属性,同时影响owner
,group
和mode
的行为。这意味着我无法使用单个资源声明指定所需的行为。
我尝试使用两个资源声明,但后来我收到错误
Error: Duplicate declaration: File[/foo/bar] is already declared in file /my/puppet/file.pp at line XX; cannot redeclare
答案 0 :(得分:1)
是的,这不起作用。请注意,Puppet不是脚本引擎,而是一种模拟所需状态的工具。
因此,您必须决定如何管理目录:作为单个文件系统条目(recurse => false
)或整个树(recurse => true
)。在后一种情况下,Puppet将始终管理您传递值的所有属性。
在您的情况下,您可能不得不回到通过不同的资源管理目录本身权限的解决方法,可能是exec
资源调用chmod
,而不管{ {1}}资源。后者不得在此星座中传递file
的值,否则这两个资源将始终相互作用。
这并不理想,但Puppet没有足够的能力来满足您的具体要求。