Związek między Vagrant, Docker, Chef i OpenStack (lub podobnymi produktami)?

56

Jestem programistą, ale interesuje mnie również kilka zadań administracyjnych. Dlatego przydaje mi się nowe przejście od czystej administracji do deweloperów.

W każdym razie mam problemy z umieszczeniem kilku rzeczy w związku. Może nie ma, więc chciałem poprosić o pomoc w wyjaśnieniu.

Zasadniczo chcę powiązać cztery rodzaje oprogramowania (z mojego zrozumienia). Dokładne produkty nie mają znaczenia, możesz umieścić dowolne podobne oprogramowanie jako alternatywę:

  • Vagrant: Z mojego rozumienia jest zautomatyzowanie tworzenia maszyn wirtualnych i zarządzania nimi: konfigurowanie, uruchamianie i zatrzymywanie. Można to zrobić za pomocą lokalnej maszyny wirtualnej lub pilota, np. Na platformie chmurowej.
  • Docker: „lekka maszyna wirtualna” oparta na kilku koncepcjach jądra systemu Linux, która może być używana do uruchamiania procesów w izolacji, np. We współdzielonym środowisku hostingowym.
  • Szef kuchni: narzędzie do konfiguracji i konfiguracji systemu operacyjnego, np. W maszynie wirtualnej.
  • OpenStack: narzędzie, które pozwala budować własną chmurę prywatną, a więc porównywalne do czegoś takiego jak AWS.

Pytanie nr 1: Czy moje wyjaśnienia są prawidłowe, czy też mylę się z niektórymi (lub wszystkimi) z tych konsumpcji?

Pytanie nr 2: Jak połączyć wszystkie te narzędzia? Czy to ma jakiś sens?

W mojej wyobraźni i z mojego punktu widzenia możesz iść i

  • użyj OpenStack do zbudowania własnej chmury,
  • używać Vagrant do zarządzania maszynami wirtualnymi działającymi w chmurze,
  • użyj Chef, aby skonfigurować te maszyny wirtualne
  • i na koniec użyj Dockera do uruchamiania procesów wewnątrz maszyn wirtualnych.

Czy to jest poprawne? A jeśli tak, czy możesz mi doradzić, jak zacząć korzystać z tego wszystkiego (jest to jednocześnie dość dużo i nie wiem jeszcze, od czego zacząć)?

Golo Roden
źródło
1
Nie masz wystarczających umiejętności, aby odpowiedzieć na to pytanie całkowicie, ale Twoja ocena Vagrant i Chef wydaje się poprawna. W moim pudełku programistycznym rozkręcam maszyny wirtualne za pomocą Vagrant, a następnie wyposażam ich w szefa kuchni i działa naprawdę dobrze.
GSP

Odpowiedzi:

54

Skorzystajmy z ich odpowiednich stron internetowych, aby dowiedzieć się, o czym są te wszystkie projekty. Zmienię jednak kolejność, w jakiej byłeś na liście:

  • Chef : Chef to platforma automatyzacyjna, która przekształca infrastrukturę w kod.

    To oprogramowanie do zarządzania konfiguracją . Większość z nich stosuje ten sam paradygmat: pozwalają określić stan , w jakim ma być komputer, w odniesieniu do plików konfiguracyjnych, zainstalowanego oprogramowania, użytkowników, grup i wielu innych typów zasobów. Większość z nich zapewnia także funkcjonalność umożliwiającą wprowadzanie zmian na określone maszyny, proces zwykle nazywany orkiestracją .

  • Vagrant : Twórz i konfiguruj lekkie, odtwarzalne i przenośne środowiska programistyczne.

    Zapewnia powtarzalny sposób generowania w pełni zwirtualizowanych maszyn przy użyciu technologii Oracle VirtualBox lub VMWare jako dostawców . Vagrant może koordynować z oprogramowaniem do zarządzania konfiguracją, aby kontynuować proces instalacji po zakończeniu pracy instalatora systemu operacyjnego. Jest to nazywane udostępnianiem .

  • Docker : projekt typu open source do pakowania, wysyłania i uruchamiania dowolnej aplikacji jako lekki kontener

    Funkcjonalność tego oprogramowania w pewnym stopniu pokrywa się z funkcjonalnością Vagrant, ponieważ zapewnia środki do definiowania instalacji systemów operacyjnych, ale znacznie różni się technologią stosowaną do tego celu. Docker używa kontenerów Linux , które same w sobie nie są maszynami wirtualnymi, ale izolowanymi procesami działającymi w izolowanych systemach plików. Docker może również używać systemu zarządzania konfiguracją do udostępniania kontenerów.

  • OpenStack : oprogramowanie typu open source do budowania chmur prywatnych i publicznych.

    Chociaż prawdą jest, że OpenStack można wdrożyć na jednym komputerze , takie wdrożenie służy wyłącznie weryfikacji koncepcji, prawdopodobnie nie jest zbyt funkcjonalne z powodu ograniczeń zasobów.

    Podstawowym celem instalacji OpenStack są środowiska typu „multi-node” bez systemu metalowego, w których różne komponenty mogą być używane w dedykowanym sprzęcie w celu uzyskania lepszych wyników.

    Kluczową funkcją OpenStack jest obsługa wielu technologii wirtualizacji, od w pełni zwirtualizowanych (VirtualBox, VMWare), po parawirtualizację (KVM / Qemu), a także kontenery (LXC), a nawet Linux w trybie użytkownika (UML) .

Próbowałem przedstawić te produkty jako komponenty określonej architektury. Z mojego punktu widzenia sensowne jest, aby najpierw móc zdefiniować swoje potrzeby w odniesieniu do potrzebnego środowiska (szef kuchni, lalek, Ansible, ...), a następnie móc wdrożyć je w kontrolowany sposób (Vagrant, Docker , ...) i w razie potrzeby skaluj go do globalnego rozmiaru.

Ile z tych wszystkich potrzebnych funkcji należy określić w zakresie projektu.

Zauważ też, że nadmiernie uprościłem głównie wszystkie wyjaśnienia techniczne. Aby uzyskać szczegółowe informacje, skorzystaj z odnośników.

dawud
źródło
czy szef kuchni i marionetka są tym samym narzędziem? Mam na myśli, że są równoważne? Jeśli chcesz uruchomić to na hoście z systemem Windows 10, jakich narzędzi byś użył?
ReynierPM
Marionetka jest podobnym narzędziem do szefa kuchni. Nie jestem pewien, czy jest lepszy w systemie Windows ..
Adeerlike
3

Myślę, że pochodzenie ze środowiska programistycznego sprawi, że stanie się „devops” w rzeczywistości trudniejszym, twoje pytanie ma prawie 3 lata, więc byłoby interesujące usłyszeć, jak znajdujesz podróż, dam odpowiedź z punktu widzenia administrator systemu o aplikacjach, o których wspomniałeś powyżej, i mam nadzieję, że rzuci nieco światła lub da nietechniczną perspektywę, która pozwoli wyjaśnić, dlaczego osoba (administrator lub programista) zacznie rozważać dokładnie to, o co prosiłeś, np. od deweloperów perspektywa jaki jest związek między x, y, z czy te narzędzia są większe niż suma ich części?

Właściwie myślę, że administratorzy sys mają tutaj przewagę, większość aplikacji, o których wspomniałeś w swoim pytaniu, rozwiązuje problemy administracyjne, a dzięki temu zapewnia bardziej abstrakcyjne środowisko centrum danych, a to z kolei jest bardziej programowalne dla programistów i nowego „ strategia devops (przeczytaj strategię / zespół, devops nie jest osobą). Jaki jest zatem związek z aplikacjami, o których wspominasz? w jaki sposób zapewnia to całościowe podejście do usługi IT?

OpenStack: narzędzie, które pozwala budować własną chmurę prywatną, a więc porównywalne do czegoś takiego jak AWS

Tak to jest, ale co to robi? - najbardziej trafnie nazwanym systemem operacyjnym był DOS - operował on dyskiem przez abstrakcję BIOS-u, OpenStack obsługuje twoje centrum danych i abstrakty infrastruktury (IaaS - to żargon dla systemu operacyjnego centrum danych). Teraz twoje centrum danych ma API, składnię poleceń i GUI, OpenStack może obsługiwać hiperwizory, przełączniki, routery, zapory ogniowe, sieci pamięci masowej, usługi równoważenia obciążenia, hosty dokerów itp. Openstack używa „wtyczki” producenta sprzętu lub określonej funkcji może istnieć wyłącznie w oprogramowaniu jako coś zdefiniowanego przez oprogramowanielub wirtualizacja funkcji sieciowych. Oprócz tego OpenStack i wszystkie inne chmury mogą organizować własną infrastrukturę, czytając skrypty rzucane na silnik aranżacji lub uruchamiane na podstawie reguł (skalowanie w górę, skalowanie w dół itp.). Openstack jest więc gigantyczną warstwą abstrakcji, np. Nie dbam o to, jaki mam przełącznik, daj mi sieć z tym poleceniem lub, zbuduj mi skomplikowane zrównoważone obciążenie, HA, publicznie dostępne, automatyczne skalowanie, rejestracja nazwy domeny, pamięć dołączone thingy - z tego skryptu znalazłem w internecie.

Docker: „lekka maszyna wirtualna” oparta na kilku koncepcjach jądra systemu Linux, która może być używana do uruchamiania procesów w izolacji, np. We współdzielonym środowisku hostingowym.

Docker to kolejna warstwa abstrakcji i podobnie jak chmura jest technologią destrukcyjną, zmienia branżę, ponieważ rozwiązuje wiele „problemów” operacyjnych, takich jak zależności oprogramowania, aktualizacje, izolacja danych i sama przenośność. Java stała się popularna ze względu na przenośność kodu źródłowego, o której programiści nie musieli myśleć, działająca maszyna JVM oznaczała, że ​​jej kod powinien działać na ekspresie do kawy, o ile obsługuje java. Docker rozwiązuje podobny problem, aby uruchomić moją aplikację, potrzebujesz hosta dokera, a nie, potrzebujesz tej wersji Pythona, jądra, dystrybucji Linuksa i tak dalej, aplikacja nadal ma te zależności, ale hosta nie obchodzi to, a administrator nie dba o to, co robisz w izolowanym kontenerze ( do rzeczy). Docker zmienia zarówno paradygmat programowania, jak i działania, traktując cały system operacyjny i jego usługi jak pliki binarne. możemy je pobrać z repozytorium , zaktualizować, zmodyfikować, uruchomić z parametrami itp.

Szef kuchni: narzędzie do konfiguracji i konfiguracji systemu operacyjnego, np. W maszynie wirtualnej.

Tak, i nie tak destrukcyjne jak dwa pierwsze, szef kuchni, marionetka, ansible, sól, menedżer operacji centrum systemu i ogromna liczba innych aplikacji w tej przestrzeni zapewniają programistom i administratorom modelowanie wdrożeń, aktualizacji i innych działań (config zmiany), wydaje się, że nie ma żadnych organów normalizujących te wysiłki, tak jak w przypadku chmury . Ale nie mamy do czynienia z czymś tak definitywnym jak infrastruktura, więc nauczenie się ich jest bardziej bolesne i niewiele można przenosić z jednego na drugi.

Vagrant: Z mojego rozumienia jest zautomatyzowanie tworzenia maszyn wirtualnych i zarządzania nimi: konfigurowanie, uruchamianie i zatrzymywanie. Można to zrobić za pomocą lokalnej maszyny wirtualnej lub pilota, np. Na platformie chmurowej.

Jest to dziwne na liście aplikacji, o których wspominasz, Vagrant to narzędzie dla programistów i zabawka dla administratorów, możesz szybko stanąć ze środowiskiem programistycznym z włóczęgą, np. Chcę opracować aplikację na Androida, pobrać IDE z włóczęgo, myślę, że niedługo Docker go wyprzedzi.

czy możesz mi poradzić, jak zacząć korzystać z tego wszystkiego (to całkiem sporo w tym samym czasie, a jeszcze nie wiem od czego zacząć)?

Dlatego myślę, że administratorzy mają przewagę, większość z tego musieliśmy zrobić ręcznie i wiedzieć, co może pójść nie tak, manifesty marionetkowe, przetwarzanie w chmurze i organizacja dokerów będą dla nas łatwiejsze, programiści będą musieli wziąć wiele stycznych, więc mój rada dla każdego potencjalnego dewelopera ma być administratorem.

Sum1sAdmin
źródło
0

Właśnie skończyłem projekt wdrażania OpenStack, który korzysta z serwera Chef wewnątrz instancji Vagrant: https://github.com/bluechiptek/bluechipstack/blob/master/README.md

Podstawowym problemem związanym z robieniem tego w ten sposób jest uzyskanie instancji Vagrant tego samego adresu IP za każdym razem, gdy chcesz zarządzać węzłami. Jeśli robisz adresowanie statyczne, działa dobrze. Robienie tego przez VPN jest mniej niż idealne.

bezkordowy
źródło
0

Z mojej strony używam tylko kombinacji Vagrant i Docker.

Używam narzędzia Vagrant do udostępniania maszyn (istnieją dodatkowe podmioty oferujące chmurę, ale korzystam z wbudowanego VirtualBox. Ponieważ używam tego podejścia, zewnętrzna sieć i pamięć masowa są prawie manualne, ale jeśli używasz czegoś takiego jak wtyczka Vagrant-aws , możesz to zrobić powiedz AWS, aby zaopatrzył Cię w niezbędne części.

Używany przeze mnie skrypt udostępniania wskazuje bezpieczną lokalizację, która zawiera certyfikat CA i klucze używane do podpisywania CSR wraz z docker swarm jointokenami. Ponadto instaluję silnik dokujący i konfiguruję go, aby przyłączył się do roju (zainicjuj, jeśli nie ma).

Kiedy to zostanie rozwiązane, po prostu robię docker stack deployz mojej lokalnej maszyny lub buduję pudełko, aby wdrożyć stos ze wszystkim, czego potrzebuję.

W moim przypadku po prostu porzuciłem szefa kuchni, aby po prostu używał prostych skryptów poinstalacyjnych, które działają yumlub działają apt-getjako moje skrypty obsługi administracyjnej.

Używam też wtyczki Vagrant-Triggers, aby dodać dodatkowe skrypty przed zniszczeniem (w moim przypadku, aby opuścić rój).

Przyjemną częścią centralizacji z Vagrant jest to, że możesz replikować środowisko na innym systemie lub na pojedynczym komputerze, aby programować, wystarczy dodać lub zmienić providersekcję. Pamiętaj, że nie przeszedłem przez konfigurację OpenStack na jednym komputerze do zarządzania VirtualBox.

Archimedes Trajano
źródło