Marionetka i doker mogą robić wiele takich samych rzeczy, jednak podchodzą do nich inaczej.
Puppet zarządza plikami + paczkami + usługami. (Nazywany trifecta). Docker hermetyzuje pliki binarne i pliki konfiguracyjne wewnątrz kontenera.
W chwili pisania tego tekstu doker jest nadal niestabilny i nie powinien być używany w produkcji. Wiele interfejsów API prawdopodobnie zostanie zmienionych do czasu wydania wersji 1.0.
Nawet gdy doker się ustabilizuje, przekształcenie każdego procesu i pliku konfiguracyjnego w kontenery dokujące będzie dużym przedsięwzięciem.
Z drugiej strony, marionetka jest stabilnym produktem i ma cały ekosystem narzędzi (heira, mcollective, facter, razor). Narzędzia te można wdrożyć szybko i bez obaw o uszkodzenie.
Gorąco polecam następujące zasoby.
Film o zarządzaniu stosami aplikacji za pomocą marionetki
https://www.youtube.com/watch?v=KSo_mcJxFIA
Podcast o tym, jak doker i marionetka mogą ze sobą współpracować
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html
Artykuł w marionetkowym blogu na temat integracji z dokerem
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker
Kolejny artykuł na blogu na temat współistniejących marionetek i dokerów
http://puppetlabs.com/blog/can-containers-and-configuration-management-co-exist
Moduł lalek do interakcji z dokerem
http://docs.docker.io/use/puppet/
Drobna korekta terminologii devops. Devops jest bardziej metodologią tworzenia oprogramowania, w której współpracują programiści i operacje, niż jakimkolwiek konkretnym narzędziem.
Aktualizacja
Obecnie moja firma używa zarówno marionetek, jak i dokerów. Oto świetna prezentacja przedstawiona na marionetkowym konkursie 2014 na temat tego, dlaczego warto używać marionetki kontra doker. Podane przez Jamesa Turnbulla, byłego pracodawcę puppetlabs i autora książki dokerów.
https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter
Również dobry krótki samouczek wideo na temat dokera podany przez sysadmincasts.com
https://sysadmincasts.com/episodes/31-introduction-to-docker
Zalety dokerów:
- Może szybko rozwinąć instancję
- Łatwiej się nauczyć niż marionetka
- Łatwe do zrobienia 0 przestojów
Wady dokerów:
- Kontenery mają limit 10 GB podczas korzystania z backendu devicemapper
- Małe zmiany konfiguracji zajmują dużo czasu, aby odbudować kontener
- Korzystanie z rejestru dokerów, takiego jak hub.docker.com, quay.io, kosztuje (pieniądze z samoobsługowego rejestru dokerów są bardzo błędne i nie zawierają GUI)
- Brak odpowiedniego systemu inicjującego. Niektóre aplikacje nie działają dobrze.
- Brak precyzyjnej kontroli nad siecią
- Aplikacje wymagające podpowłoki (patrząc na ciebie RVM + ruby) są bardzo trudne do prawidłowego działania
- Nie można zarządzać hostami Windows, bez SLES lub innych mniej popularnych systemów operacyjnych
- Obecnie orkiestracja dokerów jest bardzo młoda.
- Obecnie nie można ustawić pliku /etc/resolv.conf w czasie kompilacji
- Różne błędy, które musimy zamontować / etc / localtime i / dev / urandom, aby zamapować na katalogach localtime i urandom hostów.
- Wydajność nie jest tak szybka (pomimo wszystkich twierdzeń, że doker powinien mieć 99% prędkości nagiego metalu, czasami jest o 30% wolniejszy niż inne maszyny).
- Małe pojemniki wciąż mają narzuty w wysokości setek megabajtów. Wszystkie nasze pojemniki to wiele gigabajtów.
Puppet Pro:
- Łatwy do skalowania
- Współpracuje z istniejącymi serwerami (Windows, Linux, Sles)
- Szybko wprowadzać małe zmiany
- Silna społeczność innych użytkowników marionetek i modułów
- Standaryzowany interfejs API do instalowania pakietów na wszystkich platformach
Wady marionetek:
- Duże infrastruktury stają się bardzo złożone
- Warunkowe zależności modułu tworzą kod spagetti
- Większa waga
Obecnie używamy marionetki do zaopatrywania naszych kontenerów dokerów. Kontenery dokerów są używane do kompilacji Jenkins i są niszczone po każdej kompilacji. Działa dobrze i zapewnia nam spójne środowisko. Oznacza to, że musimy napisać kod tylko raz, a następnie odbudować maszyny Ubuntu, Sles i Centos. Przebudowa pojemników zajmuje około 15 do 30 minut i nadal jest procesem ręcznym. Docker jest świetny do rozwijania szybkich testów vm,
Krótko mówiąc, marionetka świetnie zarządza istniejącą infrastrukturą. Docker jest dobry, jeśli masz greenfield, który jest w 100% linux, ze stosem technologii, który można zamknąć w małych, efemerycznych instancjach. Chociaż niektóre funkcje pokrywają się, nie wykluczają się wzajemnie.