如何在人偶中的多个目录上设置所有权?

问题描述

我有一堆目录[“ mydir”,“ mydir1”,“ mydir2”和“ mydir3”]。该列表将最终增长。

如何设置目录“ mydir *”的所有权?通配符*是否可以在人偶资源中使用。我知道遍历目录数组并设置权限。由于这个列表越来越大,我想使用一些通配符,例如“ mydir *”。

解决方法

简短的回答是“否”,Puppet不支持通配符资源名称。在https://ask.puppet.com/question/15769/can-we-use-wild-cards-in-file-resource-path-and-source-parameters/上有很好的解释,并提供了解决方法。

更长的答案是“否”,Puppet不支持通配符资源名称,因为这些资源通常是在Puppet服务器上枚举的,该服务器无法访问客户端文件系统,因此无法运行通配符来生成匹配项。就像上面的Puppet回答说的那样,一种选择是使用exec资源来通过Shell Glob来设置所有权,例如

exec { 'Change owner and group to user.group on /bar/foo*':
  path    => '/bin',command => 'chown user.group /bar/foo*',}

请注意,使用exec资源本身有问题。在此特定示例中,资源不是幂等的,因此每次Puppet代理运行时都会运行,这通常是不可接受的。