2013-02-14 7 views
9

Dlaczego zmiana linii w pliku konfiguracyjnym jest traktowana jako anty-wzór w Chef lub Puppet? To jest coś w rodzaju złego nawyku, jak zrozumiałem. Zakładam, że ta edycja plików odbywa się w jakiś idepotentny sposób i za pomocą zaawansowanych narzędzi (na przykład augeas).Dlaczego pliki konfiguracyjne nie powinny być zmieniane linia po linii z Chef/Puppet?

Dlaczego wdrażanie całych plików z szablonami ERB jest uważane za preferowaną metodę?

Można znaleźć wiele przykładów, w których dev-ops sugeruje użycie szablonów zamiast edycji plików. Na przykład here, here, here itp

+0

Szef kuchni FYI wspiera linię: http://rubydoc.info/gems/chef/Chef/Util/FileEdit – KCD

Odpowiedz

5

chodzi o ustawienie systemu do znanego stanu, wdrażania całych plików jest lepszy niż edycji, ponieważ masz pewność, że plik jest dokładnie zgodnie z przeznaczeniem, gdy skończysz.

Jeśli szukasz pomocy przy rozwiązywaniu problemu i edytujesz plik konfiguracyjny, nie musisz się martwić o ręczną edycję, którą wykonałeś jako niekontrolowaną część twojego środowiska. Następnym razem, gdy prowadzisz klienta-szefa kuchni, wiesz, że stan będzie dokładnie taki, jak określono w przepisie Szefa Kuchni, i nie będzie uwzględniał twojej edycji.

Ponadto, ogólnie trudniejsza i bardziej skomplikowana jest edycja pliku, niż wygenerowanie go. Możesz napisać coś, co jest idempotentne w podstawowym przypadku, ale jeśli plik zawiera błąd składniowy lub coś nieważnego, to twoja edycja już nie działa.

Jak zawsze, czasami nie masz wyboru, a edycja jest jedyną drogą do zrobienia.

13

W rzeczywistości istnieje duża część społeczności DevOps, która widzi akceptację domyślnych ustawień systemu/paczki dla plików konfiguracyjnych i tylko modyfikuje to, czego potrzebujesz, poprzez augeas jako preferowaną metodę, ponieważ jednym z nich byłyby debiuty Github (jeśli zdarzyło Ci się złapać ich w Puppet Conf 2012).

Wydaje mi się, że posiadanie domyślnego wzorca polegającego na tym, że zawsze używam szablonów, powoduje zbyt duże obciążenie konserwacyjne i prawie zawsze wymaga zablokowania w określonych wersjach wszystkich elementów w stosie lub ryzyko, że szablon będzie niezgodny z nowszą wersją tego zasobu.

Istnieją przypadki użycia dla obu opcji, ale ogólnie rzecz biorąc, preferuję praktykę "tak mało jak to możliwe", a nie "własne wszystko, nawet jeśli nie musisz" ćwiczyć.

Powiązane problemy