C'è qualche motivo per usare Puppet insieme a Docker?


16

Ho provato Ops parte di DevOps qualche tempo fa ed è stato abbastanza divertente, ma non ho tempo e motivo per provarlo in nessun progetto. Ma la settimana scorsa ho iniziato un nuovo lavoro, in cui il capo mi ha chiesto se posso configurare il server per creare qualcosa di simile all'ambiente di gestione temporanea per i progetti aziendali. Accanto a questo, ho iniziato a pensare al progetto di migrazione di essere più DevOps anziché solo dev.

Sono uscito con Docker che è fantastico e super facile per me. Ma qualche tempo fa stavo provando Puppet, quindi mi viene in mente la domanda: "C'è qualche motivo per usare Puppet con Docker?". Docker sembra fare tutte le cose che Puppet farebbe, ma in modo più semplice.

PS Qualche tempo fa su Hacker News c'era Console che è una buona scoperta di configurazione e servizio, quindi anche la configurazione può essere risolta (e sto pensando di implementare anche questo).

Risposte:


18

Puppet e docker possono fare molte delle stesse cose, tuttavia si avvicinano in modo diverso.

Puppet gestisce file + pacchetti + servizi. (Chiamato il trifecta). Docker incapsula file binari e file di configurazione all'interno di un contenitore.

Al momento della stesura di questo documento, la finestra mobile è ancora instabile e non dovrebbe essere utilizzata in produzione. È probabile che molte API vengano modificate fino al rilascio della versione 1.0.

Anche quando la finestra mobile diventa stabile, sarà una grande impresa convertire tutti i processi e configurare i file in contenitori docker.

Il burattino d'altra parte è un prodotto stabile e viene fornito con un intero ecosistema di strumenti (heira, collettore, facter, rasoio). Questi strumenti possono essere implementati rapidamente e senza problemi di rottura.

Consiglio vivamente le seguenti risorse.

Un video su come gestire gli stack di applicazioni con le marionette
https://www.youtube.com/watch?v=KSo_mcJxFIA

Un podcast su come docker e burattini possono lavorare insieme
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html

Un articolo sul blog delle marionette su come integrarsi con la finestra mobile
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker

Un altro articolo di blog su marionette e docker che coesistono
http://puppetlabs.com/blog/can-containers-and-configuration-management-co-exist

Un modulo fantoccio per interagire con la finestra mobile
http://docs.docker.io/use/puppet/

Una correzione minore sulla terminologia dei devops. Devops è più una metodologia di sviluppo software in cui gli sviluppatori e le operazioni cooperano, che qualsiasi strumento specifico.

Aggiornare

Attualmente la mia azienda utilizza sia marionette che docker. Ecco una grande presentazione fatta a puppet conf 2014 sul perché dovresti usare puppet vs docker. Dato da James Turnbull, un ex datore di lavoro di burattini e autore del libro docker.

https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter

Anche un buon breve video tutorial su docker fornito da sysadmincasts.com

https://sysadmincasts.com/episodes/31-introduction-to-docker

Pro Docker:

  • Può far girare rapidamente l'istanza
  • Più facile da imparare rispetto al burattino
  • 0 tempi di inattività facili da eseguire

Contro Docker:

  • I contenitori hanno un limite di 10 GB quando si utilizza il backend devicemapper
  • Le piccole modifiche alla configurazione richiedono molto tempo per ricostruire il contenitore
  • Costa denaro per usare un registro docker come hub.docker.com, quay.io (Il registro docker self hosted è estremamente difettoso e non ha gui)
  • Nessun sistema init adeguato. Alcune applicazioni non funzionano bene.
  • Nessun controllo dettagliato sulla rete
  • Le applicazioni che richiedono subshells (ti guardano RVM + ruby) sono molto complicate per funzionare correttamente
  • Impossibile gestire host di Windows, senza SLES o altri sistemi operativi meno diffusi
  • Attualmente l'orchestrazione docker è molto giovane.
  • Attualmente non puoi impostare il tuo /etc/resolv.conf al momento della compilazione
  • Vari bug che dobbiamo montare / etc / localtime e / dev / urandom per mappare le directory localtime e urandom degli host.
  • Le prestazioni non sono così veloci (nonostante tutte le affermazioni secondo cui la docker dovrebbe essere al 99% la velocità del bare metal, a volte è più lenta del 30% rispetto ad altre macchine).
  • I piccoli contenitori hanno ancora centinaia di megabyte di sovraccarico. I nostri contenitori sono tutti più gigabyte.

Puppet Pro:

  • Facile da ridimensionare
  • Funziona con server esistenti (Windows, Linux, SLE)
  • Veloce per apportare piccole modifiche
  • Forte comunità di altri utenti e moduli fantoccio
  • API standardizzata per l'installazione di pacchetti su tutte le piattaforme

Contro i burattini:

  • Le grandi infrastrutture diventano molto complesse
  • Le dipendenze del modulo condizionale creano il codice spagetti
  • Più pesante

Attualmente utilizziamo le marionette per il provisioning dei nostri contenitori docker. I contenitori docker vengono utilizzati per le build jenkins e vengono distrutti dopo ogni build. Funziona bene e ci offre un ambiente coerente. Ciò significa che dobbiamo scrivere il codice una sola volta e quindi ricostruire sia Ubuntu, Sles e Centos Machines. La ricostruzione dei contenitori richiede circa 15-30 minuti ed è ancora un processo manuale. Docker è ottimo per girare vm di test rapidi,

Quindi in breve, fantoccio è ottimo nella gestione della tua infrastruttura esistente. Docker è utile se si dispone di un campo verde al 100% Linux con uno stack tecnologico che può essere racchiuso in piccole istanze effimere. Mentre alcune funzionalità si sovrappongono, non si escludono a vicenda.


5
Ho trovato questa risposta soggettiva e speculativa. Non credo che risponda davvero al motivo per cui si potrebbe continuare a usare Puppet insieme / insieme a Docker, quando Docker appare, ad alto livello, come uno strumento più semplice per lo stesso scopo.
8bitjunkie,

1
@ 7SpecialGems Aggiornato con più fatti.
spuder

1
sarebbe bello vedere una recensione di questa risposta nel mondo 2015 e come sono cambiate le cose
Oliver Bayes-Shelton,

La domanda / risposta è ancora relativa nel 2019? Cosa potrebbe essere cambiato?
Md. Abu Taher,

2

Docker consente di eseguire il provisioning e la configurazione iniziale dei contenitori, ma esegue comandi una tantum all'avvio del contenitore.

Puppet è più potente quando lo esegui come demone, assicura che la tua configurazione rimanga come la specifichi, quindi per esempio se il tuo servizio smette di funzionare, lo riavvierà.

Una delle cose migliori che si manifestano nella configurazione delle marionette (correttamente progettata) è che sono idempotenti ; si suppone che descriva lo stato in cui vuoi essere e non necessariamente i passaggi per arrivarci.

Consente inoltre di astrarre e parametrizzare le configurazioni e di esportare parametri creati su un server o contenitore e utilizzarli in un altro (ad es. Raccolta di un elenco di nomi host di nodi per un'applicazione di monitoraggio).

Direi che servono sicuramente a scopi diversi ma correlati. Attualmente sto cercando di utilizzare i manifest di marionette esistenti per iniziare a configurare i contenitori in modo che gli ambienti di sviluppo siano più simili agli ambienti di produzione.

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.