Najlepsze praktyki szefa kuchni / pytania

48

Używam i kocham Puppet. Przeprowadziłam się do nowej firmy i adoptują szefa kuchni. Próbuję więc nauczyć się szefa kuchni, ale ciężko mi to wszystko poskładać, ponieważ wciąż myślę w Puppet =)

Oto moje pytania:

  • Czy lepiej jest konfigurować role w Ruby DSL, JSON lub z konsoli zarządzania? Dlaczego istnieje wiele sposobów na zrobienie tego samego?
  • Czy potrafisz uporządkować książki kucharskie w podkatalogach? np .: mamy niestandardowe oprogramowanie, dla którego chciałbym napisać książkę kucharską i włożyć ją do: repozytorium kucharza / książki kucharskie / nasz komputer / książka programowa celna czy to dobra praktyka?
  • Czy tworzę książkę kucharską dla każdego rodzaju roli, która określa jej działanie? Czy mam te książki kucharskie zawierające inne książki kucharskie (tj. Książka kucharska dla mojej roli serwera WWW obejmuje książkę kucharską apache). Nie jestem pewien, jak obsługiwane są wzajemne zależności i dziedziczenie książek kucharskich.
  • Czy istnieje coś takiego jak zewnętrzny klasyfikator węzłów Puppet, więc węzły automatycznie określają swoje role?
  • Wygląda na to, że możesz konfigurować rzeczy za pomocą noża lub w konsoli zarządzania lub edytować pliki JSON? To jest dla mnie bardzo mylące, dlaczego istnieje tak wiele sposobów robienia rzeczy, to paraliżuje! Czy istnieje powód do korzystania z jednego lub drugiego? Pochodząc z marionetki wydaje się, że łatwo byłoby przypadkowo źle skonfigurować coś za pomocą tych narzędzi (tzn. Pozostawić coś poza)
  • Jak mogę automatycznie udostępnić węzły Chef w moim klastrze programistów? Za pomocą Puppet uruchamiam maszynę wirtualną, która łączy się z puppermasterem i rozpoczyna bieg kukiełkowy i sam się konfiguruje (rolę określa zewnętrzny klasyfikator węzłów). Jak to zrobić z szefem kuchni? Zainstalować szefa kuchni z plikami pem / rb, które wiążą go z serwerem szefa kuchni, ręcznie powiedzieć węzłu swoje role nożem lub edytować to w interfejsie zarządzania, a następnie uruchomić bieg szefa kuchni-klienta, aby się skonfigurować?

Ukończyłem samouczki wprowadzające i widzę, że mają one samouczki EC2, ale nigdy nie korzystałem z EC2, więc trudno mi je śledzić. W tym momencie prowadziłem działającego szefa kuchni i zaczynam się bawić z konfigurowaniem pojedynczego węzła. Gdzie mogę się stąd udać? Czy muszę zacząć przeglądać publiczne książki kucharskie?

Dokumenty w Opscode są w porządku, ale nie tak świetne jak Puppet's. Czy są jakieś inne dobre zasoby szefa kuchni, których mógłbym brakować podczas wyszukiwania?

Rizen
źródło
5
Zbyt wiele pytań w jednym poście. Rozważ podzielenie każdego z nich na własne. Jest to lepsze dla całej społeczności, a także zapewni lepsze, bardziej szczegółowe odpowiedzi.
Wesley,

Odpowiedzi:

84

Edytuj To pytanie i odpowiedź mają lata. Ostateczne najlepsze praktyki są nauczane za pośrednictwem samodzielnych modułów szkoleniowych Learn Chef Rally wyprodukowanych przez Chef Software, Inc. Większość oryginalnej odpowiedzi znajduje się poniżej.

W tej odpowiedzi „szef kuchni” lub „szef-klient” zwykle odnosi się do szefa kuchni Infra, produktu. W 2013 r . Zmieniono nazwę Opscode na Chef Software, Inc. W kwietniu 2019 r. Szef kuchni otworzył kod źródłowy dla wszystkich swoich produktów, a także stworzył spójną nazwę marki.

Nie jest jasne, czy lepiej ustawić role w ruby ​​DSL, JSON, czy z konsoli zarządzania? Dlaczego istnieje wiele sposobów na zrobienie tego samego?

Aktualizacja 2019 : Pliki polityk to najlepszy przepływ pracy do użycia. Role są uważane za gorszą praktykę, a Chef Software, Inc. zaleca migrację do plików zasad.

Istnieje wiele sposobów na zrobienie tego samego, ponieważ ludzie mają różne przepływy pracy. Wybierz przepływ pracy, który jest najlepszy dla twojego środowiska. Pozwól mi wyjaśnić, jakie są różnice, abyś mógł podjąć świadomą decyzję.

Ruby DSL for Roles istnieje, aby ułatwić pisanie ról bez znajomości składni JSON. Jest to prosty sposób na rozpoczęcie pracy z rolami. Po dokonaniu zmian prześlij je nożem na serwer szefa kuchni.

knife role from file myrole.rb

Konwertuje to rolę na JSON i przechowuje ją na serwerze. Jeśli masz środowisko, które wymusza Repozytorium Szefów Kuchni, w którym twoje role pełnią rolę źródła prawdy, działa to całkiem dobrze.

JSON jest tym, co przechowuje serwer szefa kuchni, więc możesz także edytować JSON bezpośrednio w konsoli zarządzania. Wymaga więcej pól niż Ruby DSL, aby Knife mógł poprawnie rozpoznać przesłanie. Te dane są do pewnego stopnia ukryte za pośrednictwem interfejsu internetowego.

Wadą korzystania z konsoli webui / zarządzania do edycji ról jest to, że nie znajdują się one w lokalnym systemie kontroli wersji, chyba że zostaną pobrane z serwera. Możesz to zrobić nożem:

knife role show myrole -Fj

-FjMówi nóż na „wyświetlaczu w formacie JSON.” Jeśli chcesz, możesz przekierować dane wyjściowe do pliku .json.

Aktualizacja sprzed lat : Istnieją dodatkowe polecenia noża do pracy z plikami w lokalnym repozytorium szefów kuchni. Obecnie te polecenia obsługują tylko pliki w formacie JSON. Społeczność RFC jest otwarty, który zajmie dodając wsparcie dla DSL Ruby dla tych wtyczek. Oto krótkie podsumowanie przepływu pracy.

Sprawdź różnice w zawartości między serwerem a plikiem lokalnym.

knife diff roles/myrole.json

Prześlij plik roli w formacie JSON. roles/Wymagana jest ścieżka. Zostanie to zmapowane do tego samego punktu końcowego interfejsu API na serwerze.

knife upload roles/myrole.json

Pobierz zawartość z serwera, zastępując zawartość pliku w repozytorium.

knife download roles/myrole.json

Komendy te pochodzą z knife-essentialspakietu klienta szefa kuchni.

Czy potrafisz uporządkować książki kucharskie w podkatalogach? np. mamy niestandardowe oprogramowanie, dla którego chciałbym napisać książkę kucharską i wbić ją w: repo szefa kuchni / książki kucharskie / nasz komputer / książka programowa celna czy to dobra praktyka?

Nie. Nóż oczekuje, gdzie powinny się znajdować książki kucharskie, ponieważ używa interfejsu API do przesyłania książek kucharskich na serwer. Jest to ustawione za knife.rbpomocą cookbook_path. W starszych wersjach Chef Infra można było określić szereg ścieżek do książek kucharskich, ale jest to przestarzałe, ponieważ wymagało to większej konserwacji i było mylące dla użytkowników.

Zgodnie z konwencją nazywamy książki kucharskie specyficzne dla klienta lub witryny z nazwą przedrostka w katalogu książek kucharskich. Na przykład będzie to:

chef-repo/cookbooks/ourcompany_customsoftware

W zależności od tego, co robisz, może istnieć wiele różnych książek kucharskich dla „naszej firmy”.

Dalsze informacje:

Czy tworzę książkę kucharską dla każdego rodzaju roli, która określa jej działanie? Czy te książki kucharskie zawierają inne książki kucharskie (tj. Książka kucharska dla mojej roli serwera WWW obejmuje książkę kucharską apache). Nie jestem pewien, jak obsługiwane są wzajemne zależności i dziedziczenie książek kucharskich.

Nie ma bezpośredniego związku ani zależności między rolami a książkami kucharskimi.

Role mają listę uruchamiania, która określa przepisy i inne role, które powinny być stosowane do każdego węzła, który pełni tę rolę. Węzły mają listę uruchamiania, która może zawierać role lub przepisy. Gdy szef kuchni uruchomi się w węźle, rozszerzy listę uruchomień dla wszystkich zawartych w nim ról i przepisów, a następnie pobierze wymagane książki kucharskie. Na liście uruchomień węzła:

recipe[apache2]

Szef kuchni pobierze apache2książkę kucharską dla węzła, aby mógł zastosować ten przepis.

Możesz mieć książkę kucharską dotyczącą roli w swojej infrastrukturze. Częściej będziesz mieć książki kucharskie, które służą do konfigurowania niektórych rodzajów usług, takich jak apache2, mysql, redis, haproxy itp. Następnie umieścisz je w odpowiednich rolach. Jeśli masz niestandardowe rzeczy specyficzne dla aplikacji, które muszą się zdarzyć, aby spełnić rolę, możesz zapisać to w niestandardowej książce kucharskiej (jak wspomniałem powyżej).

Dalsze informacje:

Czy istnieje coś takiego jak zewnętrzny kukiełkowy klasyfikator węzłów, więc węzły automatycznie określają swoje role?

"Tak." Serwer infra Chef automatycznie przechowuje dane węzła (w JSON), a serwer automatycznie indeksuje wszystkie dane węzła do wyszukiwania.

Dalsze informacje:

Wygląda na to, że możesz konfigurować rzeczy za pomocą noża lub w konsoli zarządzania lub edytować pliki JSON? To jest dla mnie bardzo mylące, dlaczego istnieje tak wiele sposobów robienia rzeczy, to paraliżuje! Czy istnieje powód do korzystania z jednego lub drugiego?

Serwer infra Chef ma interfejs API RESTful, który wysyła i odbiera odpowiedzi JSON. Nóż i konsola zarządzania to interfejsy użytkownika do interakcji z interfejsem API z administracyjnego punktu widzenia.

Możesz lepiej korzystać z narzędzia, które lubisz, chociaż konsola zarządzania nie ma tylu funkcji, co Knife. Większość osób korzystających z Chef Infra woli interfejs wiersza poleceń ze względu na moc i elastyczność, jaką zapewnia, nawet ludzie używający Chef Infra w systemie Windows. Ponadto knifejest narzędziem opartym na wtyczkach, które umożliwia tworzenie nowych wtyczek do interakcji z serwerem Chef Infra Server lub innymi częściami infrastruktury.

Chef Infra to zestaw bibliotek, prymitywów i API. Daje to elastyczność w budowaniu systemu zarządzania konfiguracją, który działa najlepiej dla Twojej infrastruktury.

Dalsza lektura:

Jak mogę automatycznie udostępnić węzły kucharzowi w klastrze deweloperów? Z marionetką odpalam maszynę wirtualną, która łączy się z puppermatserem i rozpoczyna bieg marionetek i sam się konfiguruje (rolę określa zewnętrzny klasyfikator węzłów). Jak to zrobić z szefem kuchni? - Zainstalować szefa kuchni z plikami pem / rb, które wiążą go z serwerem szefa kuchni, ręcznie powiedzieć węzłu swoje role nożem lub edytować to w interfejsie zarządzania, a następnie uruchomić bieg szefa kuchni-klienta, aby się skonfigurować?

Będziesz chciał użyć wtyczki bootstrap noża. Jest to wbudowana wtyczka dostarczana z nożem. Wywołujesz to w ten sposób:

knife bootstrap 10.1.1.112 -x root -i ~/.ssh/root_id_rsa -r 'role[webserver]'

Spowoduje to:

  • SSH do systemu docelowego (10.1.1.112) jako rootużytkownik używający klucza SSH (możesz ssh jako inny użytkownik, a następnie użyć --sudo).
  • Zainstaluj Ruby
  • Zainstaluj szefa kuchni
  • Utwórz plik konfiguracyjny szefa kuchni dla swojego serwera szefa kuchni, czytając konfigurację noża (.chef / knife.rb).
  • Skopiuj klucz prywatny „sprawdzania poprawności” RSA, którego węzeł użyje do automatycznej rejestracji na serwerze Chef Server.
  • Uruchom, chef-clientużywając określonego rozdzielonego przecinkami uruchomienia. W tym przykładzie zastosowano tylko webserverrolę.

Zakłada się, że system docelowy został zainicjowany, ma adres IP i można SSH jako root. W zależności od lokalnych zasad i procesu udostępniania może być konieczne dostosowanie sposobu działania. Strona ładowania noża na wiki opisuje więcej o tym, jak to działa.

Knife posiada również wtyczki dla wielu dostawców publicznych chmur obliczeniowych, takich jak Amazon EC2 i Rackspace Cloud. Dostępne są wtyczki do prywatnych środowisk chmurowych, takich jak Eucalyptus i OpenStack. Istnieją również wtyczki do VMware, Vsphere i innych. Więcej informacji można znaleźć w dokumentacji.

Dalsza lektura:

Czy są jakieś inne dobre zasoby szefa kuchni, których mogę brakować podczas wyszukiwania?

Chef Dokumentacja podstawowym źródłem dokumentacji.

Dowiedz Chef Rally to seria zorganizowanych modułów, które można dowiedzieć się wszystkiego na temat różnych aspektów Chef infra, i innych produktów Chef.

Prowadziłem blog, w którym zamieszczałem wskazówki, porady i przewodniki na temat Chef Infra: http://jtimberman.housepub.org/ . Miałem serię zatytułowaną „ szybkie porady ”. Ze względu na rzeczywiste okoliczności i inne zobowiązania nie mam już czasu na utrzymanie strony, ale mogę do niej wrócić w przyszłości.

Klienci szefa kuchni mogą uzyskać pomoc i wsparcie na stronie pomocy technicznej:

Społeczność użytkowników szefów kuchni jest doskonałym źródłem dodatkowej pomocy:

Dodatkowe zasoby są dostępne na Chef Software, Inc stronie internetowej .

Mam nadzieję, że to pomoże.

jtimberman
źródło
2
Jest to cenny zasób, proszę częściej link do niego.
Pooyan Khosravi
Coś do dodania / aktualizacji 7 lat później? ;)
Spechal