使用Puppet创建目录并递归复制具有不同访问权限的文件

使用Puppet创建目录并递归复制具有不同访问权限的文件,puppet,Puppet,我希望创建/确保目录存在,并尽可能使用本机Puppet方法将许多文件递归复制到该目录中。所有文件的文件模式相同,但与目录不同 我正在CentOS 6.10上使用Puppet6 6.10.0版 此代码将创建/确保“我的目录”存在,并将所有文件复制到该目录,但将访问权限和所有权设置为完全相同 file { "/opt/dir1": ensure => "directory", owner => "user1",

我希望创建/确保目录存在,并尽可能使用本机Puppet方法将许多文件递归复制到该目录中。所有文件的文件模式相同,但与目录不同

我正在CentOS 6.10上使用Puppet6 6.10.0版

此代码将创建/确保“我的目录”存在,并将所有文件复制到该目录,但将访问权限和所有权设置为完全相同

file { "/opt/dir1":
  ensure  => "directory",
  owner   => "user1",
  group   => "root",
  mode    => "0700",
  recurse => true,
  source  => "puppet:///modules/mymodule/dir1",
}
我得到的是:

ls -la /opt/dir1"
drwx------ 2 user1 root 4096 Sep 23 20:31 .
drwxr-xr-x 7 user1 root 4096 Oct  6 15:20 ..
-rwx------ 1 user1 root   72 Oct  5 17:15 file1
我想要的是:

ls -la /opt/dir1"
drwx------ 2 user1 root 4096 Sep 23 20:31 .
drwxr-xr-x 7 user1 root 4096 Oct  6 15:20 ..
-rw-r--r-- 1 user1 root   72 Oct  5 17:15 file1

使用
递归时,Puppet
文件
资源无法为apex目录及其文件设置不同的模式


你能用一个新的吗?使用
archive
资源,您可以指定
tar
文件作为源文件,权限将按照
tar
文件中的权限设置。

如果您能够管理源文件中的权限和模式,则可以使用此参数。注意,根据您的版本,您可能会收到不推荐使用的警告:

Warning: The `source_permissions` parameter is deprecated. Explicitly set `owner`, `group`, and `mode`.

file { "/opt/dir1":
  ensure            => "directory",
  owner             => "user1",
  group             => "root",
  source_permissions => "use",
  recurse           => true,
  source            => "puppet:///modules/mymodule/dir1",
}

这将允许您在
源中管理模式,但仍然覆盖所有者和组。您还可以删除上面的所有者和组参数,并在源中管理它们。但是,如果您有windows客户端和linux puppet master,我不确定这是如何工作的,或者主代理上的用户/组不匹配这对文件很有用,但目录需要是0700而不是0755,现在设置的目录没有“mode”参数。即使源目录有mode
0700
?这有点尴尬,它确实可以按预期工作!昨天我测试这个的时候真是疯狂的一天。这是一个问题,但对我来说,我必须使主人的木偶,以便它可以被木偶看到。现在我不能像自己一样做出改变。不知道其他商店是如何开设的,这是另一天的问题。另一个警告是我在“source\u permissions”参数中得到的“deprecated”警告。总之,这确实回答了这个问题。