2013-04-10 8 views
5

Ich benutze Puppet 3 auf Amazon Linux 2012.09, eines meiner Manifeste eingerichtet und einige Verzeichnisse reconfigs. Eine der Aufgaben besteht darin, den Ordnerbesitzer und die Gruppe recursivelt nur auf einen anderen Benutzer zu ändern - dies dauert jedoch 60 Sekunden und es gibt kaum etwas im Verzeichnis - das chown myuser: myuser/var/lib/jenkins im Terminal nimm weniger als eine Sekunde.Puppet 3 Datei recurse schrecklich langsam

Meine Frage ist: Gibt es eine bessere/schnellere Möglichkeit, Verzeichnisbesitz in Puppet rekursiv zu ändern?

Dank

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

Antwort

4

Ich sehe diese Langsamkeit zu, und es scheint, aufgrund Puppet prüft jede Datei unter /var/lib/jenkins individuell zu sein, es die Berechtigungen korrekt Eigentümer muss sicherstellen, die Zeit in Anspruch nimmt, da eine Menge von Dateien gibt es unter $JENKINS_HOME.

ich um es auf unserem Jenkins Server gearbeitet, indem stattdessen einen einfachen chown -R Befehl (mit exec) ausgeführt wird, wenn das Top-Level-Verzeichnis nicht von dem gewünschten Benutzer gehört:

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 ist der Eigentümer/Group Combo I wollen diese Verzeichnisse, die von besessen werden. Dies brachte meine Marionettenzeiten auf ein normales Niveau zurück.

(Hinweis. Ich stat -c %U verwendet, aber Sie können die genauen Formatierungsoptionen je nach Betriebssystem optimieren, müssen dieser Befehl gedruckt den textuellen Namen des Besitzers und arbeitete für mich auf Linux.)