2012-10-09 7 views
5

Używam złożonej konfiguracji serwera dla usługi defacto wysokiej dostępności. Jak dotąd wszystko zajmuje mi około dwóch dni, więc chciałbym zautomatyzować obsługę administracyjną.Korzystanie z Chef/Puppet i zarządzanie ręcznie wprowadzanymi zmianami

Jednak wykonuję wiele ręcznych zmian na (działających) serwerach. Typowym przykładem jest zmiana konfiguracji zapory sieciowej w celu poradzenia sobie z różnymi próbami włamania, powodzią pakietów itp. Ważna jest szybka praca nad aktywnymi węzłami. Również serwer utrzymuje wiele aktywnych połączeń TCP, a ich utrata w przypadku prostej zmiany konfiguracji nie wchodzi w grę.

Nie rozumiem, czy któryś z Szefów lub Marionetek został zaprojektowany, aby sobie z tym poradzić. Kiedy raz zmienię konfigurację systemu, chciałbym ją gdzieś przechowywać i używać podczas, gdy następna instancja jest zabezpieczona. Czy powinienem trzymać się jednego z tych narzędzi, czy wybrać inny?

Odpowiedz

4

Ręcznie wykonane zmiany i zaopatrzenie nie biorą się w garść. Nawet nie piją herbaty razem.

W pracy używamy lalek do zarządzania wszystkimi arquitecture, a jak trzeba to zrobić ręcznie wykonane zmiany w pośpiechu ze względu na wąskich gardeł, ataki itp

Co robimy najpierw upewnić lalek jest w stanie aby ustawić każdą część arquitecture, która będzie gotowa do dostarczenia bez żadnego konkretnego tuningu.

Kiedy musimy zrobić ręcznie wprowadzone zmiany, jeśli spieszysz się tak długo, że nie zadzierzesz z plikami zarządzanymi przez lalkę, nie ma ryzyka, jeśli to plik zarządzany przez kukiełkę, co musimy zmienić, po prostu przestajemy marionetkę agent i rób wszystko, czego potrzebujemy.

Po pośpiechu skończyła, możemy postępować w następujący sposób:

Te zmiany powinny być stosowane do wszystkich serwerów z tymi samymi objawami?

Jeśli tak, to można rozwijać to, co lalek wezwanie „fakty”, która jest kod, który jest prowadzony na agenta na każdym biegu i zapisać wyniki w zmiennych dostępnych we wszystkich modułach lalkowych, więc jeśli na przykład zmieniono ip Conntrack maksymalna wartość, ponieważ firewall nie był w stanie obsłużyć wszystkich połączeń, możesz łatwo (dziesięć linii kodu) mieć w marionetce na każdym uruchomieniu zmienną z aktualną wartością conntrack, a więc powiedzieć marionetce, aby ustawić maksymalną wartość związaną z bieżącym użyciem . Wtedy wszystkie inne serwery będą czerpać korzyści z tego tuningu i prawdopodobnie nigdy nie będziesz musiał zajmować się problemami conntrack (tak długo, jak długo będziesz używać kukiełki z krótką częstotliwością, która jest domyślna)

Te zmiany powinny być zawsze stosowane ręcznie w danych sytuacjach awaryjnych?

Jeśli konfiguracja jest zarządzana przez marionetkę, znajdź sposób na włączenie innego pliku i powiedz lalce, aby go zignorowała. Jest to najprostszy sposób, jednak nie zawsze jest to możliwe (np./Etc/network/interfaces does not support includes). Jeśli nie jest to możliwe, będziesz musiał przerwać działanie agentów lalkowych w sytuacjach kryzysowych, aby móc zmienić pliki lalkowe bez ryzyka, że ​​zostaną usunięci podczas kolejnego biegu marionetek.

Czy zmiany dotyczą tylko tego hosta i żaden inny host tego nie potrzebuje?

Dodaj do lalek mimo to! Umieść sweet jeśli $ fqdn == my.very.specific.host i umieść w nim wszystko, czego potrzebujesz. Nawet w przypadku pojedynczego przypadku zawsze korzystne (i czasochłonne) jest migrowanie wszystkich zmian dokonanych na serwerze, co pozwoli na pełne przywrócenie konfiguracji serwera, jeśli z jakiegoś powodu serwer ulegnie awarii do stanu nieodzyskiwalnego (np.Problemy sprzętowe)

Podsumowując:

Dla mnie trick w kontaktach z ręką wprowadził zmiany to wkłada wiele wysiłku w rozumowaniu, jak zdecydowaliśmy się na zmianę i po awaryjny jest ponad przenieść tę logikę do lalek. Jeśli czujesz, że coś jest nie tak, ponieważ dla danego oprogramowania wszystkie zostały wykorzystane, ale wolna pamięć była nadal dostępna na serwerze, więc radzenie sobie z maksymalnym natężeniem ruchu było rozsądne, aby umożliwić uruchamianie większej liczby gniazd, a następnie poświęcić trochę czasu na przeniesienie tej logiki na marionetkę . Oczywiście bardzo ostrożnie i tak czasochłonnie, jak ilość różnych scenariuszy twojej architektury, którą chcesz przetestować, ale na koniec jest to bardzo satysfakcjonujące, VERY.

+2

Całkiem podobnie jest z szefem kuchni. _______ Ps. Możesz dołączyć do/etc/network/interfaces :) (poszukaj "source" w http://manpages.ubuntu.com/manpages/oneiric/man5/interfaces.5.html) lub dodaj swoje konfiguracje do/etc/network /if-(up|down).d/ katalogi :) –

2

Chciałbym uzupełnić doskonałą odpowiedź Valora.

marionetka to narzędzie wymuszające konfigurację. Więc trzeba myśleć o tym w ten sposób:

  • na maszynie biegnę lalek na ...
  • pytam klienta lalkowy ...
  • aby upewnić się, że config obecnej maszynie ...
  • jest jak określono w config lalek ...
  • który jest pobierany z serwera lalkowego, lub bezpośrednio z bandą plików lalkowych (łatwiej)

tak, aby odpowiedzieć na jedno z dążeniu jony, lalki nie wymagają ponownego uruchomienia komputera lub usługi. Ale jeśli zmiana w pliku konfiguracyjnym ustawionym za pomocą marionetki wymaga ponownego uruchomienia odpowiedniej usługi/demona/aplikacji, nie można tego uniknąć. W marionetce istnieje metoda informująca, że ​​w przypadku zmiany konfiguracji konieczne jest ponowne uruchomienie usługi. Oczywiście marionetka nie uruchomi ponownie usługi, jeśli zauważy, że nic się nie zmieniło.

Valor przy założeniu korzystania marionetką w sposób klient/serwer, z (na przykład) Klienci lalkowe odpytywania serwera lalkowy dla config co godzin. Ale możliwe jest również przeniesienie twoich plików lalkowych z maszyny na maszynę, na przykład z git i ręczne uruchomienie marionetki. W ten sposób to:

  1. znacznie prostsze niż w technice klient/serwer (uwierzytelnianie jest ból głowy)
  2. wymusić zmianę config kiedy jawnie poprosić o to, unikając w ten sposób nadpisania swojego ręcznie zmienia tylko

Oczywiście nie jest to najlepszy sposób użycia lalek, jeśli zarządzasz wieloma maszynami, ale może to być dobry początek lub dobre przejście.

A także, marionetka jest bardzo trudne, aby dowiedzieć się na interesującym poziomie. Zajęło mi 2 tygodnie, aby móc automatycznie zainstalować serwer AWS od zera. Nie żałuję tego, ale możesz chcieć poznać ten fakt, jeśli musisz przekonać szefa, by przydzielił ci czas.

Powiązane problemy