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.