Uno Chef per dominarli tutti


10

Sto cercando uno chef per automatizzare le distribuzioni di Magento, sia in opzioni di hosting Magento standard che in ambienti come EC2. Ho cercato su Google e vedo numerose ricette, ma nessuna mi sembra davvero canonica. C'è una sceneggiatura particolare dello chef che è migliore / la migliore? Inoltre, se hai già fatto implementazioni di chef con PHP, qual è una cosa che vorresti sapere quando stavi iniziando?


2
Vorrei aver saputo che Ansible ( ansible.com/home ) esisteva.
Reid Blomquist,

Altre alternative se sei interessato, saltstack.com e docker.com . Entrambi sembrano promettenti ma non ho avuto la possibilità di lavorare con nessuno dei due.
beeplogic,

1
Ho sperimentato capistrano-ash: github.com/augustash/capistrano-ash
pzirkind

Penso che Reid sia su qualcosa, Alan re: Ansible. Non richiede che un agente (funzioni con chiavi ssh +) sia installato sui client, è un sistema dichiarativo quindi è idempotente e in generale ho scoperto che usarlo mi lascia "fare una cosa, semplicemente, e farlo bene "sensazione unix-like rispetto a sistemi più robusti come chef, burattino e sale. È passato un po 'di tempo da quando lo hai pubblicato originariamente, qualche aggiornamento sui tuoi pensieri dopo aver lavorato con lo chef per un po'?
Bryan 'BJ' Hoffpauir Jr.

Risposte:


6

È quasi impossibile avere una serie di routine tutte uguali. Ho avuto successo nel scrivere uno script Bash che esegue chef-clientcorse su elenchi di host forniti da knife search. Le procedure sembrano così ...

Chef Server 10.18.2 open source su Ubuntu 12.04 LTS

  1. Inizializza variabili
  2. Ottieni l'ultimo hash di revisione da GitHub per $branch
  3. Disabilitare il monitoraggio della disponibilità per impedire avvisi sullo stato HTTP 503
  4. Passa tutti gli host Web e di utilità in modalità manutenzione
  5. Distribuire l'utilità
    1. Ferma il cron di Magento e tutti i lavoratori di Resque
    2. Indirizzare le dipendenze del filesystem
    3. Chef verifica la revisione definita come una nuova versione
    4. Indirizzare le dipendenze di Magento (pacchetti, moduli, filesystem, permessi)
    5. Aggiorna tutte le attività e gli script cron per l'automazione
    6. Distribuisci tutti i moduli (compositore)
    7. Svuota la cache con n98-magerun.phar
    8. Esegui eventuali migrazioni con n98-magerun.phar
    9. Riattiva Magento cron
    10. Avviare i lavoratori Resque
  6. Distribuire il primo host Web
    1. Indirizzare le dipendenze del filesystem
    2. Lo chef verifica il definito $revisioncome una nuova versione
    3. Indirizzo Dipendenze Magento
    4. Distribuisci tutti i moduli Magento
  7. Contrassegna una nuova distribuzione in New Relic
  8. Abilita i servizi di monitoraggio della disponibilità
  9. Disabilitare i servizi di bilanciamento del carico su tutti gli altri host web
  10. Continua le distribuzioni sugli host web, portandole in sequenza in linea
  11. Esegui routine Chef per gli host di ricerca

Fonte: https://gist.github.com/parhamr/6177160#file-2-deployment


4

Questo è il modo in cui mi sono avvicinato a quest'area indossando il ruolo di sysadmin / devops. La maggior parte dei seguenti saranno solo principi generali che cerco di seguire e non specifici dello Chef.

Ho finito per andare con Puppet perché ho scoperto che c'erano più risorse in quel momento e mi sono sentito più facile da raccogliere per me.

Ho esaminato i vari moduli precompilati disponibili per cose come apache, php5, ecc. Molti di loro sembravano fare molto più di quanto avessi bisogno ed essere così poco familiari con la piattaforma che non mi fidavo di quello che stava succedendo. Ho deciso che sarebbe stato più semplice per me identificare ciò che dovevo fare su ciascun tipo di nodo.

Ho avviato il processo eseguendo il provisioning dell'ambiente di sviluppo locale del team (vargrant + virtual box). Per ogni servizio / componente ho creato un modulo: php5, apache2, redis, mysql, ecc.

Una volta che l'ambiente di sviluppo era stabile / funzionante, ho iniziato a sviluppare l'ambiente di controllo qualità. Ho definito tipi di nodi generici per server Web, redis, vernice, ecc. Che hanno riutilizzato gli stessi moduli di dev. Una volta fatto questo, la messa in scena e la produzione necessarie erano necessarie modifiche minime per essere operativi.

Mentre stai esaminando e scrivendo le tue ricette / modelli, dovresti considerare come riutilizzare / generalizzare. Non programmare cose come percorsi o utenti / gruppi che potrebbero cambiare tra distro / progetti / ambienti. Dal momento che stai guardando un approccio generalizzato, immagino che un grande ostacolo avrà a che fare con le differenze tra le distribuzioni * nix.

Ancora più importante, mantenere è semplice. Automatizza / standardizza le parti più importanti / che richiedono tempo dell'ambiente. Iterare, evolvere.

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.