2013-04-10 63 views
5

我在亚马逊Linux 2012.09上使用Puppet 3,我的一个清单设置并重新配置了一些目录。其中一个任务是将文件夹所有者和组递归转换为另一个用户 - 但是,这需要60秒才能完成,目录中几乎没有任何东西 - 终端中的chown myuser:myuser/var/lib/jenkins不到一秒钟。木偶3文件递归非常缓慢

我的问题是:是否有更好/更快的方式在Puppet中递归地更改目录所有权?

感谢

file {'/var/lib/jenkins': 
    ensure => 'directory', 
    owner => myuser, 
    group => myuser, 
    recurse => true, 
    require => Package['jenkins'], 
} 

回答

4

我看到这个缓慢过了,这似乎是由于木偶检查/var/lib/jenkins单独下的每个文件,以确保它具有正确的所有者权限,这需要时间,因为有大量的文件根据$JENKINS_HOME

我工作围绕它我们詹金斯服务器上的,而不是运行一个简单的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是主人/组合我想要这些目录归属于。这使我的Puppet时间回落到正常水平。

注意:我用stat -c %U但您可能需要根据您的操作系统的确切格式选项来调整这个命令印刷业主的文本名称和为我工作在Linux上。)