我需要写一个Puppet脚本来管理目录/foo/bar
,这样:
/foo/bar
上的文件模式是777
,但目录中所有内容的权限都不由Puppet管理- CCD_ 4上的所有者/组及其内的一切都是CCD_
也就是说,第一个要求是非递归的,但第二个属性是递归的。
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
是的,这将不起作用。请注意,Puppet不是一个脚本引擎,而是一个建模所需状态的工具。
因此,您必须决定如何管理目录:作为单个文件系统条目(recurse => false
)或整个树(recurse => true
)。在后一种情况下,Puppet将始终管理您正在传递值的所有属性。
在您的情况下,您可能不得不求助于通过不同的资源来管理目录本身的权限的变通方法,该资源可能是调用chmod
的exec
资源,与file
资源无关。后一个不能传递该星座中mode
的值,否则这两个资源将始终相互对抗。
这并不理想,但Puppet并不能很好地满足您的特定要求。