2013-04-10 9 views
5

Używam Puppet 3 na Amazon Linux 2012.09, jeden z moich manifestów ustawia i rekonfiguruje niektóre katalogi. Jednym z zadań jest po prostu zmiana właściciela folderu i grupy rekursywnej na innego użytkownika - jednak zajmie to 60 sekund, aby zakończyć i nie ma prawie nic w katalogu - chuuuuuuuuuuuuuuu: myuser/var/lib/jenkins w terminalu zająć mniej niż sekundę.Pajacka 3 plik recurse potwornie powolny

Moje pytanie brzmi: czy istnieje lepszy/szybszy sposób rekurencyjnego zmiany właściciela katalogu w grze Puppet?

Dzięki

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

Odpowiedz

4

widzę tę powolność też, i to wydaje się być spowodowane Lalek sprawdzając każdy plik pod /var/lib/jenkins indywidualnie w celu zapewnienia, że ​​ma odpowiednie uprawnienia właściciela, który wymaga czasu, ponieważ istnieje wiele plików pod $JENKINS_HOME.

pracowałem wokół niego na naszym serwerze Jenkins przez zamiast prowadzenia prostego chown -R polecenia (z exec) ilekroć w katalogu najwyższego poziomu nie jest w posiadaniu żądanej użytkownik:

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 jest właścicielem/group combo I chcą te katalogi, których właścicielem jest. Spowodowało to powrót moich czasów kukiełek do normalnego poziomu.

(Uwaga. Kiedyś stat -c %U ale może trzeba dostosować dokładne opcje formatowania zależności od systemu operacyjnego Komenda ta drukowana właściciela nazwę tekstową i pracował dla mnie w systemie Linux).