Biblioteki kucharzy czy definicje?

Jako stosunkowo nowy kucharz, jestem zobowiązany do tworzenia bibliotek lub definicji z istniejących przepisów.

Istnieje możliwość użycia zasobu bash, zasobu bloku ruby (który powiadamia inny zasób bloku ruby z opóźnionym czasem), zasobu szablonu, który ponownie powiadamia blok ruby itp.

Jakie byłoby najlepsze podejście do tego problemu? Biblioteka czy definicja?

Przeczytałem, że jeśli użyję definicji, Nie będę w stanie powiadomić zasobu w definicji, czy to znaczy, że mogę powiadomić zasób w innym pliku definicji?

Czytałem też, że w bibliotekach nie można bezpośrednio korzystać z zasobów. Jeśli to prawda, jak mogę użyć zasobu w mojej bibliotece?

 16
Author: codeforester, 2014-02-12

1 answers

Więc, to jest "głównie oparte na opiniach", ale i tak odpowiem. Są tu 4 różne opcje:

  1. definicja
  2. LWRP
  3. HWRP
  4. "Biblioteka"

Definicja jest tylko opakowaniem wokół jednego lub więcej zasobów z pewną parametryzacją. Jednak definicje są Nie dodawane do zbioru zasobów. Oznacza to, że nie można "powiadamiać" ani wyzwalać zdarzeń w definicji. Służą wyłącznie do owijania i nazywania serii powtarzalnych kroków Znalezione w przepisie.

DSL (ang. light-weight resource and provider) - DSL specyficzny dla kucharza, który w czasie wykonywania kompiluje się do Hwrp (ang. Heavy-weight resource and provider). Zarówno LWRPs, jak i HWRPs są rozszerzeniami Chef . Oprócz owijania serii powtarzalnych zadań, *WRPs stworzy zasoby najwyższego poziomu w Chef (jak template lub package), które są dostępne do wykorzystania w recepturze i innych przepisach książki kucharskiej, jak również.

Różnica pomiędzy i LWRP i HWRP jest naprawdę Rubin. HWRPs używa pełnowymiarowych klas Ruby. Jeśli nie jesteś programistą Ruby, mogą one być nieco onieśmielające. Niemniej jednak, należy spróbować przed pisaniem i LWRP. Do tworzenia zasobów wykorzystuje DSL specyficzny dla Szefa Kuchni. Pod koniec dnia kompilują się do (mniej więcej) tego samego kodu, co ciężki odpowiednik. Podam kilka referencji na końcu. Masz dostęp do zasobów Chef wewnątrz każdej implementacji, jak również run_context.

Wreszcie "biblioteki" (Uwaga cytaty) są często źle rozumiane i nadużywane. Są kodem Ruby, ocenianym jako Ruby, więc mogą zrobić prawie wszystko. HWRPs są właściwie formą biblioteki. Czasami ludzie używają bibliotek jako "pomocników". Stworzą moduł pomocniczy z metodami takimi jak best_ip_for lub aggregate_some_data, a następnie "wymieszają" (Rubyism) tę bibliotekę z ich recepturami lub zasobami, aby wyschnąć. Innym razem biblioteki mogą być użyte do "hakowania" samego kucharza. Dobrym tego przykładem jest książka kucharska częściowe wyszukiwanie . Facebook mówił o tym, jak ograniczyli liczbę atrybutów wysyłanych z powrotem do serwera w zeszłym roku również w ChefConf. Biblioteki są naprawdę nieokreślonym terytorium, ponieważ są kluczami do królestwa.

Tak więc, chociaż nie odpowiedziałem na twoje pytanie (ponieważ jest oparte na opiniach), mam nadzieję, że dałem ci wystarczająco dużo informacji na temat najlepszego kierunku naprzód. Pamiętaj, że każda Infrastruktura to specjalny Płatek śniegu i nie ma right odpowiedz; jest tylko najlepsza odpowiedź. Sugerowałbym podzielenie się tymi informacjami z zespołem i rozważenie zalet i wad każdego podejścia. Możesz również wypróbować listę mailingową Szefa Kuchni, na której ludzie będą Cię opiniować.

Zasoby:

 70
Author: sethvargo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-04 20:57:39