2015-04-09 9 views
5

Ho avuto una domanda che speravo che qualcuno potesse avere una risposta. Essenzialmente quello che sto facendo è cercare di assicurarmi che io stia sempre usando una versione fissa, leggermente più vecchia di phpunit, che ho inserito nelle risorse del mio modulo.fantoccio: Impossibile eseguire il backup <file>: ottenuto il nuovo contenuto per la somma

Il manifesto:

file 
    { 
      "/usr/bin/phpunit": 
      ensure => file, 
      owner => 'root', 
      group => 'root', 
      mode => 0755, 
      source => "puppet:///modules/php/phpunit" 
    } 

Preparazione: ho scaricato la versione attuale ('sbagliato') di PHPUnit e posizionarlo nella directory/usr/bin.

Quindi la prima marionetta run riesce:

Notice: Compiled catalog for <hostname> in environment production in 3.06 seconds 
Notice: /Stage[main]/Php/File[/usr/bin/phpunit]/content: content changed '{md5}9f61f732829f4f9e3d31e56613f1a93a' to '{md}38789acbf53196e20e9b89e065cbed94' 
Notice: /Stage[main]/Httpd/Service[httpd]: Triggered 'refresh' from 1 events 
Notice: Finished catalog run in 15.86 seconds 

Poi scaricare la versione corrente (ancora 'sbagliato') di PHPUnit e posizionarlo nella directory/usr/bin nuovo.

Questa volta la marionetta fallisce.

Notice: Compiled catalog for <hostname> in environment production in 2.96 seconds 
Error: Could not back up /usr/bin/phpunit: Got passed new contents for sum {md5}9f61f732829f4f9e3d31e56613f1a93a 
Error: Could not back up /usr/bin/phpunit: Got passed new contents for sum {md5}9f61f732829f4f9e3d31e56613f1a93a 
Error: /Stage[main]/Php/File[/usr/bin/phpunit]/content: change from {md5}9f61f732829f4f9e3d31e56613f1a93a to {md5}38789acbf53196e20e9b89e065cbed94 failed: Could not back up /usr/bin/phpunit: Got passed new contents for sum {md5}9f61f732829f4f9e3d31e56613f1a93a 

Cosa dà? Se cancello il file (/ var/lib/puppet/clientbucket/9/f/6/1/f/7/3/2/9f61f732829f4f9e3d31e56613f1a93a /) dal mio filebucket funzionerà di nuovo ... per la prossima esecuzione, ma non quello dopo.

Cosa sto sbagliando?

Apprezzerei qualsiasi input e grazie in anticipo.

+0

Ma il file scaricato è identico a quello che finisce nel filebucket? Se è così, l'errore non sembra avere senso. Questo potrebbe essere un bug. –

+0

Questo è un bug in alcune versioni di puppet: https://tickets.puppetlabs.com/browse/PUP-1038 – Arkandel

+1

... sembra non correlato (si verifica quando si usa 'content' non' source' ecc.) –

risposta

0

Questo non ha altra soluzione oltre all'aggiornamento poiché c'è un bug in alcune versioni di puppet in cui i file contenenti sia caratteri UTF8 e binari sono trattati in modo errato, e risulta in un messaggio di errore.

https://tickets.puppetlabs.com/browse/PUP-1038

La soluzione ridicolmente troppo complicata che ho usato come una soluzione è quella di avere un file .tar nella risorsa di file che hanno notificato un exec che untars e pone l'eseguibile effettivo nella directory corretta, assicurandosi che il timestamp per quest'ultimo è più recente del precedente.

È tutt'altro che ideale, ma funziona in casi come il mio, dove l'aggiornamento di puppet alla versione più recente non è un'opzione interessante.

+1

Potrebbe non essere la risposta corretta. PUP-1038 si applica ai manifest che usano il parametro 'content =>', non il parametro 'source =>' che è usato nella domanda sopra. PUP-1038 dice "_se usi il parametro 'source' piuttosto che il parametro 'content' ... il manifest può essere applicato con successo_". –

1

Come soluzione temporanea, è possibile impostare backup => false nella risorsa file. Questo è un po 'pericoloso, ovviamente.

+0

Ho provato backup => false, non fa differenza. – Arkandel

0

Sono stato in grado di risolvere lo stesso problema rimuovendo /var/lib/puppet/clientbucket sul nodo client.

Questo nodo ha esaurito lo spazio su disco, quindi Puppet probabilmente ha archiviato in modo errato i file vuoti.

1

Hai avuto anche questo errore. L'ho risolto con una combinazione di due risposte precedenti.

In primo luogo ho dovuto cancellare/var/lib/burattino/clientbucket sul nodo client eseguendo:

sudo rm -r /var/lib/puppet/clientbucket 

Proprio facendo questo vi permetterà solo eseguito una volta di più.

Quindi ho dovuto contrassegnare il backup => false per impedirgli di ricreare il file, mancando un passaggio che non è riuscito a risolverlo per me.La risposta accettata non è corretta dicendo che c'è

"nessuna soluzione diversa dall'aggiornamento".

Problemi correlati