Rapporto tra Vagrant, Docker, Chef e OpenStack (o prodotti simili)?


56

Sono uno sviluppatore web, ma sono anche interessato ad alcune attività amministrative. Quindi, il nuovo passaggio dalla pura amministrazione agli sviluppatori è utile per me.

Ad ogni modo, ho qualche problema a mettere in relazione alcune cose. Forse non ce n'è, quindi volevo chiedere aiuto per chiarire.

Fondamentalmente, ciò che voglio mettere in relazione sono quattro tipi di software (dalla mia comprensione). I prodotti esatti non contano, puoi posizionare qualsiasi software simile in alternativa:

  • Vagrant: dal mio punto di vista è automatizzare la creazione e la gestione di macchine virtuali: configurarle, avviarle e arrestarle. Questo può essere fatto usando una VM locale o remota, ad esempio su una piattaforma cloud.
  • Docker: una "VM leggera", basata su alcuni concetti del kernel Linux, che può essere utilizzata per eseguire i processi in modo isolato, ad esempio in un ambiente di web hosting condiviso.
  • Chef: uno strumento per impostare e configurare un sistema operativo, ad esempio all'interno di una VM.
  • OpenStack: uno strumento che ti consente di creare il tuo cloud privato, quindi paragonabile a qualcosa come AWS.

Domanda n. 1: le mie spiegazioni sono giuste o ho torto con alcuni (o tutti) di questi consumi?

Domanda n. 2: come potrei mescolare tutti quegli strumenti? Avrebbe senso?

Nella mia immaginazione e dal mio punto di vista, potresti andare e

  • usa OpenStack per creare il tuo cloud,
  • utilizzare Vagrant per gestire le macchine virtuali eseguite nel cloud,
  • utilizzare Chef per configurare queste macchine virtuali
  • e infine utilizzare Docker per eseguire processi all'interno delle macchine virtuali.

È corretto? E se è così, puoi darmi un consiglio su come iniziare a usare tutto questo (è abbastanza allo stesso tempo, e non so ancora da dove cominciare)?


1
Non abbastanza abile da rispondere completamente, ma la tua valutazione di Vagrant e Chef sembra essere corretta. Nella mia casella di sviluppo, faccio girare le macchine virtuali usando Vagrant e quindi eseguo il provisioning con Chef e funziona davvero bene.
SPG

Risposte:


54

Usiamo le rispettive pagine Web per scoprire di cosa trattano tutti questi progetti. Cambierò l'ordine in cui hai elencato, però:

  • Chef : Chef è una piattaforma di automazione che trasforma l'infrastruttura in codice.

    Questo è un software di gestione della configurazione . Molti di loro usano lo stesso paradigma: ti permettono di definire lo stato in cui vuoi essere una macchina, per quanto riguarda i file di configurazione, il software installato, gli utenti, i gruppi e molti altri tipi di risorse. La maggior parte di essi fornisce anche funzionalità per inviare modifiche su macchine specifiche, un processo solitamente chiamato orchestrazione .

  • Vagrant : crea e configura ambienti di sviluppo leggeri, riproducibili e portatili.

    Fornisce un modo riproducibile per generare macchine completamente virtualizzate utilizzando la tecnologia Oracle VirtualBox o VMWare come provider . Vagrant può coordinarsi con un software di gestione della configurazione per continuare il processo di installazione in cui termina il programma di installazione del sistema operativo. Questo è noto come provisioning .

  • Docker : un progetto open source per imballare, spedire ed eseguire qualsiasi applicazione come contenitore leggero

    La funzionalità di questo software si sovrappone in qualche modo a quella di Vagrant, in cui fornisce i mezzi per definire le installazioni dei sistemi operativi, ma differisce notevolmente nella tecnologia utilizzata a questo scopo. Docker utilizza container Linux , che non sono macchine virtuali di per sé, ma processi isolati in esecuzione in filesystem isolati. Docker può anche utilizzare un sistema di gestione della configurazione per il provisioning dei contenitori.

  • OpenStack : software open source per la creazione di cloud pubblici e privati.

    Mentre è vero che OpenStack può essere distribuito su un singolo computer , tale distribuzione è puramente a prova di concetto, probabilmente non molto funzionale a causa di vincoli di risorse.

    L'obiettivo principale delle installazioni OpenStack sono ambienti multi-nodo bare metal, in cui i diversi componenti possono essere utilizzati in hardware dedicato per ottenere risultati migliori.

    Una funzionalità chiave di OpenStack è il supporto per molte tecnologie di virtualizzazione, da completamente virtualizzate (VirtualBox, VMWare), paravirtualizzate (KVM / Qemu) e anche container (LXC) e persino User Mode Linux (UML) .

Ho provato a presentare questi prodotti come componenti di un'architettura specifica. Dal mio punto di vista, ha senso prima essere in grado di definire le tue esigenze in relazione all'ambiente di cui hai bisogno (Chef, Puppet, Ansible, ...), quindi essere in grado di distribuirlo in modo controllato (Vagrant, Docker , ...) e infine ridimensionarlo alla dimensione globale, se necessario.

Quanta di tutte queste funzionalità di cui hai bisogno dovrebbe essere definita nell'ambito del tuo progetto.

Nota anche che ho semplificato troppo tutte le spiegazioni tecniche. Si prega di utilizzare i collegamenti di riferimento per informazioni dettagliate.


sono Chef e marionette lo stesso strumento? Voglio dire sono equivalenti? Se vuoi eseguirlo su un host Windows 10, quali strumenti useresti?
ReynierPM

Puppet è uno strumento simile a Chef. Non sono sicuro se sia meglio su Windows ..
Adeerlike

3

Penso che provenire da un background di sviluppatori renderà in realtà un 'devops' in realtà più complicato, la tua domanda ha quasi 3 anni quindi sarebbe interessante sentire come stai trovando il viaggio, darò una risposta dal punto di vista di l'amministratore di sistema circa le applicazioni che hai menzionato sopra e, si spera, farà luce o fornirà una prospettiva non tecnica che spiegherà perché una persona (amministratore o sviluppatore) inizierebbe a considerare esattamente ciò che hai chiesto, ad esempio dagli sviluppatori prospettiva qual è la relazione tra x, y, z questi strumenti sono maggiori della somma delle loro parti?

In realtà penso che gli amministratori di sistema abbiano il sopravvento qui, la maggior parte delle applicazioni che menzioni nella tua domanda risolvono i "problemi" dell'amministratore e in tal modo forniscono un ambiente di data center più astratto, e questo a sua volta è più programmabile per gli sviluppatori e il nuovo " strategia di devops (leggi strategia / squadra, devops non è una persona). Quindi qual è la relazione con le app che menzioni? in che modo questo fornisce un approccio olistico al servizio IT?

OpenStack: uno strumento che ti consente di creare il tuo cloud privato, quindi paragonabile a qualcosa come AWS

Questo è quello che è, ma cosa fa? - il sistema operativo per lo più chiamato in modo appropriato era DOS - gestiva il tuo disco astrattando il BIOS, OpenStack gestisce il tuo data center e estrae la tua infrastruttura (IaaS - è Jargon per il sistema operativo del data center). Ora il data center ha un'API, una sintassi dei comandi e una GUI, OpenStack può guidare hypervisor, switch, router, firewall, reti di deposito, bilanciamento del carico, gli host della finestra mobile ecc .. OpenStack utilizza l'hardware produce 'plugin' o la particolare funzione può esistere esclusivamente nel software poiché il software ha definito qualcosao virtualizzazione delle funzioni di rete. Oltre a questo OpenStack e tutti gli altri cloud, è possibile orchestrare la propria infrastruttura leggendo gli script lanciati nel motore di orchestrazione o attivati ​​in base a regole (ridimensionamento, ridimensionamento, ecc.). Quindi openstack è un gigantesco strato di astrazione, ad es. Non mi interessa quale switch ho, dammi una rete con questo comando o, costruiscimi un carico bilanciato complicato, HA, disponibile pubblicamente, ridimensionamento automatico, nome dominio registrato, archiviazione allegato thingy - con questo script che ho trovato su internet.

Docker: una "VM leggera", basata su alcuni concetti del kernel Linux, che può essere utilizzata per eseguire i processi in modo isolato, ad esempio in un ambiente di web hosting condiviso.

Docker è un altro livello di astrazione e come il cloud è una tecnologia dirompente, sta cambiando il settore perché risolve molti "problemi" operativi come dipendenze software, aggiornamenti, isolamento dei dati e pura portabilità. Java è diventato popolare a causa della portabilità del codice sorgente a cui gli sviluppatori non dovevano pensare, una JVM in esecuzione significava che il loro codice doveva essere eseguito sulla macchina da caffè fintanto che supportava Java. Docker risolve un problema simile, per eseguire la mia app è necessario un host docker, no, hai bisogno di questa versione di Python, di questo kernel, di questa distribuzione Linux e così via, l'app ovviamente ha ancora quelle dipendenze, ma all'host sottostante non importa e all'amministratore non importa cosa fai all'interno di un container isolato ( fino a un certo punto). Docker sta cambiando il paradigma dello sviluppo e delle operazioni, trattando un intero sistema operativo e i suoi servizi come un binario. possiamo ottenerli da un repository , eseguirne la versione, modificarli, eseguirli con parametri ecc.

Chef: uno strumento per impostare e configurare un sistema operativo, ad esempio all'interno di una VM.

Sì, e non dirompente come i primi due, Chef, burattino, ansible, salt, gestore delle operazioni del centro di sistema e una moltitudine di altre applicazioni in questo spazio offrono un modo per sviluppatori e amministratori di modellare implementazioni, aggiornamenti e altre azioni (configurazione cambiamenti), non sembra esserci alcun organismo di standard che guardi questi sforzi come nel caso del cloud . Ma non abbiamo a che fare con qualcosa di definitivo come l'infrastruttura, quindi è più doloroso apprenderli e non molto è trasferibile dall'uno all'altro.

Vagrant: dal mio punto di vista è automatizzare la creazione e la gestione di macchine virtuali: configurarle, avviarle e arrestarle. Questo può essere fatto usando una VM locale o remota, ad esempio su una piattaforma cloud.

Questo è quello strano nell'elenco delle app che menzioni, Vagrant è uno strumento per sviluppatori e un giocattolo per amministratori, puoi rapidamente creare un ambiente di sviluppo con Vagrant, ad esempio voglio sviluppare un'app Android, prendere un IDE da vagabondo, penso che presto verrà superato da Docker.

puoi darmi un consiglio su come iniziare a usare tutto questo (è abbastanza allo stesso tempo, e non so ancora da dove cominciare)?

Questo è il motivo per cui penso che gli amministratori abbiano il sopravvento, abbiamo dovuto fare la maggior parte di questo manualmente e sapere cosa può andare storto, manifestazioni di marionette, cloud computing e orchestrazione docker ci saranno più facili, gli sviluppatori si troveranno a prendere molte tangenti, quindi il mio il consiglio a tutti i potenziali devops è di essere prima un amministratore.


0

Ho appena finito un progetto di distribuzione OpenStack che utilizza un server Chef all'interno di un'istanza di Vagrant: https://github.com/bluechiptek/bluechipstack/blob/master/README.md

Il problema principale nel farlo in questo modo è ottenere l'istanza di Vagrant lo stesso IP ogni volta che si desidera gestire i nodi. Se si esegue l'indirizzamento statico, funziona bene. Farlo tramite una VPN non è l'ideale.


0

Da parte mia, sto usando solo una combinazione di Vagrant e Docker.

Uso Vagrant per eseguire il provisioning delle macchine (ci sono provider cloud aggiuntivi ma sto usando VirtualBox integrato. Poiché sto usando questo approccio, la rete esterna e l'archiviazione sono praticamente manuali, ma se usi qualcosa come il plug -in vagrant-aws puoi dì ad AWS di fornire le parti necessarie per te.

Lo script di provisioning che utilizzo punta a un percorso sicuro che contiene il certificato CA e le chiavi utilizzate per firmare i CSR insieme ai docker swarm jointoken. Inoltre installo docker-engine e lo configuro per unirmi allo sciame (inizializza se non ce n'è).

Una volta risolto il docker stack deployproblema , faccio semplicemente una macchina dal mio computer locale o costruisco una scatola per distribuire lo stack con tutto ciò di cui ho bisogno.

Nel mio caso ho appena lasciato lo chef a favore dell'uso di semplici script post-installazione che funzionano yumo apt-getcome script di provisioning.

Uso anche il plug -in Vagrant-Triggers per aggiungere ulteriori script prima di distruggere (nel mio caso per lasciare lo sciame).

La parte interessante della centralizzazione con Vagrant è che puoi replicare l'ambiente su un altro sistema o singolo computer per lo sviluppo, devi solo aggiungere o modificare la providersezione. Intendiamoci, non ho ancora provato a configurare OpenStack su un singolo computer per gestire VirtualBox.

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.