Zarządzane środowiska rozwijają się z czasem, często w wyniku zwiększonego zaangażowania danych lub być może ze względu na potrzebę zwiększenia wydajności poprzez współdzielone obciążenie pracą. Z tego powodu istnieje potrzeba dodawania członków. Na przykład z MongoDB można zdecydować się na replikację i sharding, co w konsekwencji będzie wymagało dodania większej liczby członków do klastra. Konfigurowanie i wdrażanie tych środowisk z czasem staje się gorączkowe, czasochłonne, podatne na błędy ludzkie i wiele związanych z nimi niepowodzeń, które ostatecznie powodują koszty operacyjne. Weźmy na przykład zestaw replik z 50 członkami w MongoDB i chcesz shardować określoną kolekcję w każdym z członków, robienie tego ręcznie dla każdego jest czasochłonne, dlatego potrzebujemy scentralizowanego systemu, z którego możesz łatwo skonfigurować wszystkich członków . Za pomocą scentralizowanych systemów piszesz kod, który następnie konfiguruje podłączonych członków. Kod jest zatem czytelny dla człowieka, wersjonowalny i testowalny w celu usunięcia ewentualnych błędów przed wdrożeniem.
Co to jest oprogramowanie szefa kuchni?
Chef to oprogramowanie do automatyzacji napisane w języku Ruby, które służy do usprawnienia konfiguracji i utrzymania maszyn w chmurze lub na serwerach prem. Czyni to, zapewniając, że wszyscy podłączeni członkowie otrzymują wymagane zasoby, zasoby są dobrze skonfigurowane i koryguje wszelkie zasoby, które nie są w pożądanym stanie. Tak więc szef kuchni zasadniczo zapewnia, że pliki i zasoby oprogramowania, które powinny znajdować się na określonej maszynie, są obecne, poprawnie skonfigurowane i działają zgodnie z przeznaczeniem.
Komponenty szefa kuchni
Serwer szefa kuchni
Jest to centralny system kontroli, w którym przechowywane są dane konfiguracyjne. Dane są zapisane w „przepisie”, a jeśli dotyczy to wielu z tych przepisów, tworzą one książkę kucharską. System centralny zawiera również metadane opisujące każdy z węzłów zgodnie z opisem w szefie kuchni.
Wszystkie zmiany wprowadzone w przepisach przechodzą tutaj do weryfikacji przed wdrożeniem. Serwer zapewnia również, że stacja robocza i podłączone węzły są sparowane za pomocą kluczy autoryzacyjnych przed umożliwieniem komunikacji między nimi i zastosowaniem zmian.
Węzeł klienta szefa kuchni
Węzeł klienta Chef rejestruje i weryfikuje węzły oraz buduje obiekty węzłów. Zasadniczo przechowuje aktualny stan danego węzła i jego metadane.
Węzeł
Jest to maszyna fizyczna, wirtualna lub w chmurze do skonfigurowania i każda powinna mieć zainstalowany węzeł klienta.
Stacja robocza
Stacja robocza zapewnia interfejs do komunikacji między serwerem a węzłami klienta. Zapewnia platformę do pisania, testowania i wdrażania książek kucharskich. Tutaj również definiuje się role
Przetestuj kuchnię
Tutaj następuje walidacja kodu.
Nóż szefa kuchni
Interakcja z węzłami.
Książki kucharskie
Zawiera przepisy napisane w języku Ruby i służą do definiowania zadań do wykonania. Receptury określają zasoby i kolejność realizacji na zdefiniowanych zadaniach.
- atrybuty są używane do zastąpienia ustawień domyślnych.
- pliki używane do przesyłania plików z określonej ścieżki do kucharza-klienta.
- Zasób metadanych definiuje informacje o węźle zgodnie z opisem w węźle klienta.
Jak działa szef kuchni
Chef ma dwa sposoby działania, czyli klient/serwer lub w trybie samodzielnym, znanym jako „szef-solo”.
Serwer szefa kuchni otrzymuje różne atrybuty dotyczące określonego węzła od klienta szefa kuchni. Atrybuty te są następnie indeksowane za pomocą Elasticsearch przez serwer, który następnie udostępnia interfejs programowania aplikacji (API), z którego węzły klienckie mogą wysyłać zapytania do tych danych. Zwrócone wyniki są następnie wykorzystywane przez węzły klienckie do skonfigurowania odpowiednich maszyn i przekształcenia ich do pożądanego stanu.
Serwer skupia wszystkie operacje, w których mają być przechowywane zmiany
Serwery zarządzane przez szefa kuchni są od czasu do czasu oceniane pod kątem pożądanego stanu, wszelkie zmiany w konfiguracjach są automatycznie korygowane i stosowane powszechnie. Dzięki takiemu podejściu istnieje spójna konfiguracja na dużą skalę.
Pierwsze kroki z szefem kuchni
Stację roboczą kucharza można pobrać z tej strony i zainstalować. Utwórz folder o nazwie książki kucharskie i wewnątrz tego folderu uruchom polecenie:
$ chef generate cookbook first_cookbook
Spowoduje to wygenerowanie katalogu o nazwie first_cookbook z kilkoma podfolderami i plikami.
Przejdź do książki kucharskie/first_cookbook/recipes/ i zaktualizuj przepis default.rb o zawartość
file "test.txt" do
content 'This is my first recipe file'
end
Następnie uruchamiamy ten plik za pomocą polecenia
$ chef-client --local-mode --override-runlist first_cookbook.
LUB w folderze z przepisami możesz uruchomić plik za pomocą polecenia
$ chef-apply default.rb
Jeśli przejdziesz do folderu z przepisami, na pewno zobaczysz plik test.txt z treścią To jest mój pierwszy plik z przepisami. To jest takie proste. W następnej sekcji będziemy tworzyć przepisy, aby wykonać określone zadania dotyczące MongoDB
Instalowanie i konfigurowanie MongoDB z szefem kuchni
Możesz zainstalować MongoDB, tworząc przepis instalacji MongoDBInstall.rb i wypełniając go zawartością
package "mongodb" do
action :install
version '4.0.3'
end
W tym przypadku nazwa naszego pakietu to mongodb i zamierzamy zainstalować wersję 4.0.3
To, co mamy, to podstawowy przepis, ale w wielu przypadkach będziemy potrzebować zaawansowanej książki kucharskiej, aby wykonać naszą konfigurację w MongoDB. Aby ułatwić to zadanie, opracowano książki kucharskie, takie jak SC-MongoDB, które generalnie czynią konfigurację dokładną.
Książka kucharska SC-MongoDB
Książka kucharska udostępnia mongodb_instance, która umożliwia konfigurację parametrów MongoDB, zestawu replik i klastra podzielonego na fragmenty.
Aby zainstalować książkę kucharską, po prostu uruchom polecenie
$ knife supermarket download sc-mongodb
Następnie możesz użyć zdefiniowanych atrybutów w tej witrynie, aby zmienić konfigurację niektórych domyślnych atrybutów MongoDB.