我在 Amazon Linux 2012.09 上使用 Puppet 3,我的清单之一设置并重新配置了一些目录。其中一项任务只是将文件夹所有者和组递归更改为另一个用户 - 然而,这需要 60 秒以上才能完成,并且目录中几乎没有任何内容 - 终端中的 chown myuser:myuser /var/lib/jenkins花费不到一秒钟的时间。
我的问题是:是否有更好/更快的方法在 Puppet 中递归地更改目录所有权?
Thanks
file {'/var/lib/jenkins':
ensure => 'directory',
owner => myuser,
group => myuser,
recurse => true,
require => Package['jenkins'],
}
我也看到了这种缓慢,这似乎是由于 Puppet 检查了下面的每个文件/var/lib/jenkins
单独以确保它具有正确的所有者权限,这需要时间,因为下面有很多文件$JENKINS_HOME
.
我在我们的 Jenkins 服务器上通过运行一个简单的程序来解决这个问题chown -R
命令(与exec
) 只要顶级目录不属于所需用户:
define modify_owner() {
exec { "modify_owner_${title}" :
command => "/bin/chown -R ${user}:${user} '${title}'",
onlyif => "/usr/bin/stat -c %U '${title}' | grep '^${default_user}$'"
}
}
modify_owner { ['/var/lib/jenkins', '/var/log/jenkins', '/var/cache/jenkins']: }
$user
/$user
是所有者/组组合 Iwant这些目录的所有者。这让我的傀儡时间回到了正常水平。
(Note: 我用了stat -c %U
但您可能需要根据您的操作系统调整确切的格式选项。该命令打印了所有者的文本名称,并且在 Linux 上对我有用。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)