La migliore strategia per tenere sotto controllo le versioni dei libri di cucina per chef


10

Sto cercando idee sulla gestione delle versioni dei libri di cucina per chef. So che aggiungi specifiche versioni nell'ambiente, ma non sono sicuro di come procedere.

Usiamo il bibliotecario-chef che installa libri di comunità di terze parti nella cartella dei libri di cucina. Non tocchiamo mai quei libri e di tanto in tanto aggiorniamo le versioni più recenti.

Abbiamo anche i nostri libri di cucina personalizzati specifici per il sito da cui includiamo quelli della community ( include_recipe).

In teoria potremmo specificare versioni specifiche dei libri della comunità da cui dipendono i nostri libri personalizzati e quindi impostare le versioni dei nostri libri di cucina nella configurazione dell'ambiente, ma il problema è che quei libri della comunità potrebbero fare affidamento su altri libri senza versioni specificate. E quella profonda dipendenza annidata potrebbe continuare.

Quindi non vi è alcuna garanzia che quando si carica il libro di cucina sul server dello chef, non si romperà il prodotto, poiché anche i libri di cucina dipendenti potrebbero cambiare.

L'unica soluzione che posso vedere al momento è quella di specificare ogni singola versione del libro di cucina che usiamo nella configurazione dell'ambiente, inclusi quelli della community e quelli personalizzati. Ma poi devo esaminare ogni libro di cucina e capire quelle versioni.

Facciamo anche l'aggiornamento bibliotecario-chef di volta in volta e immagino che potrebbe diventare difficile rintracciare le versioni che sono cambiate e non dimenticare di aggiornare la versione nell'ambiente quando arriva il momento.

Per favore, condividi la tua esperienza e le migliori pratiche. Sono sicuro che sarà super utile per le altre persone.

Risposte:


11

Non molto tempo dopo aver iniziato a utilizzare Chef sul serio, mi sono imbattuto in questi stessi problemi. Ho avuto un senso di sanità mentale solo quando ho iniziato a fare quattro cose in modo operativo. Si noti che questi potrebbero non essere considerati "buone pratiche" da alcuni nella comunità degli Chef. Tuttavia, è così che ho portato sanità mentale, ripetibilità e ordine nel mio mondo.

  1. Crea le tue ricette. Ho smesso del tutto di usare libri di cucina della comunità e ho semplicemente creato le mie ricette, secondo le mie specifiche. In questo modo gestisco e controllo le mie dipendenze. Molti discuterebbero contro questo, ma onestamente - se prima avessi letto alcune delle ricette Opscode e della community, probabilmente non avrei scelto Chef come soluzione per cominciare. Mantengo le mie ricette semplici e in linea con il mio modo di lavorare. Ho esattamente zero libri di cucina della comunità nel mio repository.
  2. Essere disciplinati sugli aggiornamenti. Se aggiorno una ricetta, mi assicuro che funzioni ovunque e riesco a superare il fastidio di distribuirla ovunque, anche se interrompe il mio flusso di lavoro e aggiunge attrito. A lungo termine, questa è la chiave per la sanità mentale dello Chef. In casi estremi, se ho bisogno di variazioni per alcuni host, come un ambiente di test o di produzione, allora li codifico nel ricettario. Ma la mia filosofia è che la versione più recente di ogni libro di cucina dovrebbe poter essere applicata in modo sicuro ovunque siano necessari.
  3. Usa Chef Solo per tutto. Ogni pochi mesi mi viene in mente che dovrei provare a utilizzare nuovamente Chef Server. L'edizione della comunità sta migliorando, ma l'intero paradigma non sembra mai adattarsi al mio mondo. E ogni volta che ci provo, mi volto e mi tiro a calci. Il paradigma Chef Server è adatto per un mondo con server longevi che necessitano di frequenti cambi di sistema. Apporto così raramente le modifiche ai sistemi che fare in modo che i miei server effettuino il check-in costante su un server chef per gli aggiornamenti è semplicemente stupido. E ho strumenti di gran lunga migliori per garantire che i miei host siano sani. Il mio lavoro è in un mondo di macchine virtuali usa e getta, dove possono sopravvivere solo una o due modifiche alla configurazione. Ora uso esclusivamente Chef Solo e invio modifiche ai miei host, spingendo allo stesso tempo gli stessi libri di cucina a tutti gli host che ne hanno bisogno.
  4. Evitare di compilare software durante le corse di Chef. Il caso più estremo (cioè stupido) per me riguardava la compilazione di ruby-1.9.3 dalla fonte ogni volta che avviavo una nuova scatola. Ma creare pacchetti personalizzati può spesso essere una seccatura nel culo. Una volta scoperto l'ottimo strumento fpm , è diventato banale impacchettare i miei rpms, debs e gemme e ha reso la mia vita molto più efficiente e facile.

Spero che questo aiuti qualcuno!

- AGGIORNARE -

Quasi tre anni dopo, questi principi mi sono rimasti utili. Ma aggiungerò un altro consiglio, ed è proprio per gli stessi motivi che ho preferito chef-solo a chef.

  1. UTILIZZARE ANSIBILE INSTEAD

3

Ci sono 2 problemi:

  1. gestire le versioni del libro di cucina in diversi oggetti di ambiente
  2. gestire la versione della ricetta nel nodo run_list.

L'articolo Elementi essenziali delle versioni del libro di cucinaè il miglior riferimento per le versioni del libro di cucina. Secondo il n. 1, hai ragione perché è un lavoro difficile gestire diverse versioni di libri di cucina per servire diversi set di configurazione, in particolare è mescolato con dipendenze di libri di cucina in cui la maggior parte del libro di cucina dal sito di libri di cucina non fa bene questo lavoro. Quindi la configurazione potrebbe interrompersi. e se non hai gestito le versioni testando il comportamento di runtime di qualsiasi componente, si interrompe. Quindi è una cattiva idea caricare il ricettario senza specificare il numero di versione nell'oggetto ambiente. Quindi gestisci le versioni del ricettario nell'oggetto ambiente e verifica attentamente quando promuovi la versione di qualsiasi nuovo ricettario. Di solito gestisco l'oggetto ambiente in SCM e non l'ho caricato sul server chef tramite un processo automatizzato finché il ricettario modificato non funziona bene con il resto di altri componenti esistenti.

Secondo il n. 2, è un argomento complicato perché è qui che la dipendenza effettiva della ricetta funziona su ciascun nodo. In poche parole, per i nodi critici, è meglio controllare la dipendenza delle ricette specificando la versione della ricetta nell'elenco di esecuzione nodo / ruolo. Difficilmente lo faccio perché è un ottimo controllo della graniglia e costa di più per i test / promozione. Tuttavia, per il ruolo / nodo critico, questa non è una cattiva idea ma fornisce un'assicurazione sulle modifiche alla configurazione.

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.