Chef-client che non aggiorna un libro di cucina dal server


9

Ho un libro di cucina per chef (per apache2). Non funziona su un nodo. Quindi sto cercando di modificarlo e aggiornarlo, ma il nodo non sembra scaricare la nuova versione. Sono stato in grado di caricare tutto sul server chef dal mio computer locale con knife upload .successo, e stampa che ha caricato i bit del libro di cucina apache2 che ho cambiato.

Quando eseguo manualmente (come root) chef-clientsul nodo, posso vederlo contattare il server, ottenere l'elenco delle esecuzioni, ecc. Tuttavia, i file delle ricette in /var/cache/chef/cookbooks/apache2sono i vecchi file. E la ricetta fallisce (perché non ha le modifiche che ho fatto).

Come faccio a far sì che il client chef sul nodo utilizzi la nuova versione aggiornata del ricettario apache2? Devo cancellare il numero di versione nel ricettario (non l'ho fatto)?

chef-client -l debug produzione:

[2015-01-30T10:51:31+01:00] DEBUG: Synchronizing cookbook apache2
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_ldap.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_xsendfile.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_auth_openid.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_setenvif.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_python.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_authz_host.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_proxy_ajp.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_expires.rb, as the cache is up to date.
(lots of this for all files)

Sono nuovo chef, quindi avrei potuto fare un errore per principianti.


Vai all'interfaccia web dello chef-server e controlla se ci sono cambiamenti nel ricettario.
Draco Ater,

1
Assicurati di correre knife cookbook upload <cookbook_name>. Se ciò non lo risolve, prova knife cookbook list <cookbook_name>a eseguire il bump della versione e quindi a eseguire per assicurarti di caricarla davvero correttamente. In alternativa, esegui knife cookbook download(in un'altra directory) per eliminare quello che il server pensa sia il codice giusto.
Tejay Cardon,

Risposte:


6

Ci sono un paio di cose che posso pensare che potrebbero aiutarti.

  1. Verifica che la versione del libro di cucina che stai caricando sia la versione più recente

    Un problema comune con il versioning del libro di cucina è che potresti modificare la versione del libro di cucina 1.0.0 localmente e caricarla, ma Chef Server ha già la versione di libro di cucina 1.0.1 caricata su di essa. In tal caso, i client Chef in genere recuperano l'ultima versione (se non diversamente indicato) e le modifiche non verranno mai sincronizzate con la cache locale.

    Puoi visualizzare tutte le versioni correnti del libro di cucina su Chef Server tramite: knife cookbook show apache2

    Una soluzione a questa è quella che hai menzionato: aumentare il numero di versione oltre a quello esistente su Chef Server, ovvero 1.0.2 e caricare.

    Un altro metodo è rimuovere qualsiasi altro libro di cucina apache2 da Chef Server e ricaricare quello desiderato. Non è necessario alcun aggiornamento del numero di versione e il risultato finale è che Chef Server avrebbe un unico libro di ricette apache2.

  2. Convalida che le tue modifiche stanno effettivamente arrivando a Chef Server

    Utilizzando knife cookbook show apache2 <cookbook version> recipes default.rb Sostituisci versione, percorso e nome file, ad esempio se si desidera visualizzare un modello chiamato foo.erb:knife cookbook show apache2 0.1.0 templates foo.erb

    Questo comando richiederà il file da Chef Server e visualizzerà l'output nel tuo terminale. Questo è un modo semplice per determinare che le modifiche apportate vengono caricate tramite knife cookbook upload.

Oltre a questi, se questo non aiuta, aggiungere ulteriori dettagli su knifeversione, chef-serverversione, chef-clientversione e un registro di debug knife cookbook upload apache2 -VVsarebbe utile per il debug ulteriore.


1
Grazie mille per questa risposta ... mi ha portato a vedere che avevamo vincoli di libri di cucina nel nostro ambiente di produzione, non nei nostri ambienti / produzione.rb ma impostati da berkshelf! Non sapevo nemmeno che potesse farlo. Ad ogni modo, dopo aver ricaricato il nostro ambiente production.rb, un nuovo chef ha raccolto il nostro ultimo libro di cucina per app.
Colin Curtin,

2

Prima esegui il debug di tutte le versioni dei libri di cucina sul server, quindi controlla quale versione del libro di cucina il client sta scaricando. se è vecchio, controlla solo se il server ha una versione aggiornata. se è anche sì, vai all'interfaccia utente del server chef e verifica la presenza di env. potresti aver impostato un ambiente in cui è specificato il vincolo dei libri di cucina. Aggiorna la versione laggiù e ricomincerà a funzionare.


1

Un'altra causa di ciò può essere che non tutte le dipendenze del libro di cucina sono presenti sul server-chef. Mi sono imbattuto in questo proprio ora, e la nuova versione del mio libro di cucina si stava presentando knife cookbooks listma il mio client non stava usando la nuova versione. Dopo un po 'di debug, ho scoperto che Berkshelf, né il coltello avevano caricato la nuova dipendenza per il mio libro di cucina. Dopo averlo caricato, il client ha iniziato a utilizzare la versione più recente.


Assicurati di aver caricato il libro di cucina del coltello <cookbook_name>
Net Runner il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.