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.
Docker pomaga w inicjowaniu i początkowym konfigurowaniu kontenerów, ale uruchamia jednorazowe polecenia przy inicjalizacji kontenera.
Puppet jest najsilniejszy, gdy uruchomisz go jako demona, zapewnia on, że twoja konfiguracja pozostanie taka, jak ją określisz, więc na przykład, jeśli usługa przestanie działać, uruchomi ją ponownie.
Jedną z najlepszych rzeczy w (poprawnie zaprojektowanej) konfiguracji lalek jest to, że są idempotentne ; ma opisywać stan, w którym chcesz być, i niekoniecznie kroki, aby się do niego dostać.
Pozwala także na abstrakcję i parametryzację konfiguracji oraz na eksport parametrów utworzonych na jednym serwerze lub kontenerze i wykorzystanie ich w innym (np. Zebranie listy nazw hostów węzłów dla aplikacji monitorującej).
Powiedziałbym, że zdecydowanie służą innym, ale powiązanym celom. Obecnie patrzę na użycie istniejących manifestów marionetek do rozpoczęcia konfigurowania kontenerów, aby środowiska programistyczne bardziej przypominały środowiska produkcyjne.
źródło