2013-04-10 9 views
5

Sto usando Puppet 3 su Amazon Linux 2012.09, uno dei miei manifesti imposta e riconfigura alcune directory. Uno dei compiti è semplicemente cambiare il proprietario della cartella e il gruppo ricorsivo in un altro utente - tuttavia, questo richiede più di 60 secondi per completare e non c'è quasi nulla nella directory - il mio chown chown: myuser/var/lib/jenkins nel terminale dura meno di un secondo.Puppet 3 file recurse terribly slow

La mia domanda è: c'è un modo migliore/più veloce per cambiare la proprietà della directory in modo ricorsivo in Puppet?

Grazie

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

risposta

4

Vedo questo lentezza troppo, e sembra essere dovuto a delle marionette controllando ogni file sotto /var/lib/jenkins individualmente per assicurarsi che disponga delle autorizzazioni proprietario corrette, che richiede tempo dal momento che c'è un sacco di file sotto $JENKINS_HOME.

ho lavorato intorno ad esso sul nostro server Jenkins da invece eseguendo un semplice comando chown -R (con exec) ogni volta che la directory di livello superiore non è di proprietà dell'utente desiderato:

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 è il proprietario/gruppo combo I desidera queste directory di proprietà di. Questo ha portato i miei tempi di burattini ai livelli normali.

(Nota:. Ho usato stat -c %U ma potrebbe essere necessario modificare le opzioni di formattazione esatte seconda del sistema operativo Questo comando stampato nome testuale del proprietario e ha lavorato per me su Linux.)