微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我想创建/确保目录存在,并在可能的情况下使用本机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

解决方法

如果您能够管理源中的权限和模式,则可以使用此参数source_permissions => use。请注意,根据您的版本,您可能会收到不建议使用的警告:

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",}

这将允许您在source中管理模式,但仍覆盖所有者和组。您还可以将所有者和组参数放在上面,并在源代码中对其进行管理。但是我不确定如果您有Windows客户端和linux puppet master,或者master vs agent上的用户/组不匹配,该方法如何工作

,

当使用file时,Puppet recurse资源无法为apex目录及其文件设置不同的模式。 https://puppet.com/docs/puppet/5.5/types/file.html#file-attribute-mode

您可以改为使用archive resource吗?使用archive资源,您可以将tar文件指定为源,并且权限将按照tar文件中的权限进行设置。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。