Linux Bulk / Remote Administration


10

Oprócz naszej wewnętrznej infrastruktury IT, mamy około 500 maszyn z systemem Linux, które hostują nasze usługi dla świata on-line. Są one pogrupowane w kilka klastrów, takich jak Baza danych, Produkt An, NFS, Backoffice i tak dalej. Ponadto są one administrowane przez zewnętrznego dostawcę, zgodnie z naszymi specyfikacjami i wymaganiami.

Jednak napotykamy wiele problemów podczas opracowywania, wdrażania i wdrażania oprogramowania (internetowego) - szczególnie dlatego, że środowiska programistyczne i testowe nie mają prawie nic wspólnego z systemami na żywo (oszczędzam nieprzyjemnych szczegółów ...) .

Dlatego próbowałem tworzyć maszyny wirtualne, dokładnie kopiowałem różne systemy działające na żywo i przygotowywałem je do łączenia się np. Z bazami danych programowania zamiast z „prawdziwymi” bazami danych dla programistów (nie są root). Działa to całkiem dobrze, ale ...

Zastanawiałem się, jak można administrować tymi systemami zdalnie i masowo ? Czy jest jakaś rodzina oprogramowania, o której nie wiem? A przynajmniej niektóre techniki lub zasady, które powinieneś znać?

Zapewnilibyśmy każdemu programistowi kilka obrazów do uruchomienia lokalnego (VirtualBox). Dział kontroli jakości. dostałby wirtualne klastry (XEN lub Hyper-V). Jeśli muszę zapewnić dodatkowy moduł serwera, przekierować nowe połączenie z bazą danych lub po prostu chcę zaktualizować wszystko dostarczone przez menedżera pakietów ... jak mogę to zrobić bez konieczności logowania się do każdego systemu i / lub poprosić moich kolegów o pobranie i uruchomienie skryptu urządzenia?

Uważam, że istnieje wiele rozwiązań. Cóż, jakoś jestem zbyt głupi, aby wprowadzić poprawne słowa kluczowe do wyszukiwarek ... Czy to nie jest tak trywialny, jak się wydaje?

Dla przypomnienia:

  • Prawie we wszystkich systemach działa Debian GNU / Linux 6.x „squeeze”
  • Żaden programista nie jest zmuszony do używania określonego systemu operacyjnego na swojej stacji roboczej
  • Budżet jest oczywiście ograniczony, ale nie jest zbyt mały, aby kupić autorskie oprogramowanie
  • Preferowane jest rozwiązanie obejmujące naszego wyżej wymienionego dostawcę

Odpowiedzi:


15

To zależy, czego dokładnie potrzebujesz i czego szukasz. Ale ogólnie istnieje wiele rozwiązań „ zarządzania konfiguracją, takich jak:

  1. marionetka
  2. szef kuchni
  3. cfengine
  4. ansible
  5. Sól

itp. Osobiście poleciłbym marionetkę, ponieważ ma dużą społeczność i wiele zewnętrznych przepisów kulinarnych. Umożliwia to automatyczne konfigurowanie i zarządzanie systemami. Jeśli połączysz to z własnymi repozytoriami i automatycznymi aktualizacjami, np. unattended-upgradesMożesz automatycznie zaktualizować system.

Innym rozwiązaniem jest zapewnienie własnych pakietów, takich jak company-baseitp., Które automatycznie zależą od niezbędnego oprogramowania i mogą automatycznie skonfigurować system.

Powinieneś także przyjrzeć się zautomatyzowanym wdrożeniom (bez szkieletu i zwirtualizowanym). Jeśli połączysz to z zarządzaniem konfiguracją lub własnym repozytorium, możesz łatwo zautomatyzować i ponownie zainstalować swoje systemy. Jeśli chcesz rozpocząć automatyczną instalację, zapoznaj się z formansem, który obsługuje libvirt, a także instalacje z gołą kością i ma zintegrowaną obsługę marionetek. Jeśli chcesz to zrobić sam, możesz zajrzeć do kickstartu (redhat i in.) Lub „preseeding”, aby automatycznie skonfigurować system. W przypadku Debiana możesz także użyć czegoś takiego jak debootstrap lub opakowanie o nazwie grml-debootstrap obsługujące zwirtualizowane obrazy.

Aby pomóc w dostarczaniu obrazów VirtualBox dla twojego programisty, rzuć okiem na włóczęgę , pozwala zautomatyzować tworzenie zwirtualizowanych systemów za pomocą VirtualBox wspierających skrypty szefa kuchni, lalek i powłoki w celu dostosowania środowiska wirtualnego.

Jeśli chcesz skorzystać z rozwiązania przez swojego dotychczasowego dostawcę, powinieneś zapytać go, jak zarządzają Twoimi systemami, ale prawdopodobnie będzie to pewnego rodzaju zarządzanie konfiguracją. Może być możliwe uruchomienie ich agenta w systemie, jeśli masz dostęp do serwera konfiguracji.

Na google słowa kluczowe patrzeć devops, configuration management, it automationi server orchestration.

Krótko mówiąc, zautomatyzuj jak najwięcej i nawet nie myśl o robieniu rzeczy ręcznie.


1
Dziękuję Ci! To wiele do przeczytania, ale wygląda całkiem obiecująco.
mjhennig

@ mjhennig właśnie dodałem trochę więcej informacji, także ponownie. rozlokowanie. Dostępnych jest wiele zasobów, ale najważniejsze jest to, że tak naprawdę nie powinieneś robić rzeczy samodzielnie za pośrednictwem ssh / rozproszonych powłok, ale mieć do tego jakiś system.
Ulrich Dangel

2
Nie ma nic złego w robieniu rzeczy samemu, szczególnie jeśli dostępne narzędzia nie pasują do celu. Systemy takie jak Puppet są w dużej mierze narzędziami administracyjnymi, a nie zarządzaniem konfiguracją. Znaczna większość systemów, z których korzystam, nie jest nawet dostępna z serwera centralnego, ale z laptopów użytkowników za pośrednictwem (wszystkich rzeczy) VPN - próbowałem to zmienić od trzech lat. Nasz dział IT jest podzielony na regiony, ponieważ każdy region nie może prawidłowo uzyskać dostępu do drugiego. W niektórych sytuacjach niezbędne są skrypty domowej roboty. Tam też zaczynają się innowacje.
Arcege

3
@Arcege Właśnie przegłosowałem twój komentarz, skrypty są konieczne i nie musisz konwertować całej infrastruktury na raz. Najważniejsze jest zautomatyzowanie rzeczy i zapewnienie powtarzalności. Ale opisowy charakter kukiełki i szefa kuchni ma kilka unikalnych aspektów, np. Możesz testować i weryfikować klasy lalek cucumber-puppet. Oczywiście możesz opracować / rozbudować własny framework, wykorzystując istniejące komponenty, ale brzmiało to, że OP nie ma nic na miejscu i jeśli zaczynasz od zera, myślę, że najlepiej jest użyć istniejącego frameworka.
Ulrich Dangel

Tak, zgadzam się na operacje automatyczne / powtarzalne. Mam wiele zautomatyzowanych lub uruchamianych za pomocą przycisku skryptów do interfejsu między istniejącymi systemami, takimi jak Jenkins / Oc4j i integracja Subversion / Bugzilla. Po prostu nie zgodziłem się (zdecydowanie) z twoim komentarzem „nie powinieneś naprawdę robić rzeczy sam”. Czasami istniejące ramy nie mają zastosowania, jak opisałem w mojej sytuacji.
Arcege

3

Ulrich udzielił już odpowiedzi dotyczącej wdrożenia oprogramowania i automatycznej konfiguracji serwera.

Zasada jest taka

  • Zdefiniuj, jak powinny wyglądać twoje serwery - obejmuje to wspólne oprogramowanie instalowane domyślnie, schemat partycjonowania i układ systemu plików
  • Serwery produkcyjne, testowe, testowe i programistyczne nie powinny różnić się pod względem tych podstawowych standardów (w przeciwnym razie wystąpią problemy później - tak jak miało to miejsce)
  • Użyj odpowiedniego zarządzania zmianami, aby udokumentować WSZYSTKIE dokonane zmiany (w tym niewielkie zmiany w jednej linii w dowolnej konfiguracji)
  • Zawsze zmieniasz najpierw najpierw w teście, potem w rozwoju, potem w inscenizacji, a potem w produkcji

Poprosiłeś o przydatne narzędzie do zarządzania masą serwerów - moim osobistym ulubionym jest klaster-ssh ( cssh). Wpisz raz i wprowadź zmiany na wielu serwerach jednocześnie.

Jeśli odkryjesz problem i masz jego rozwiązanie, które usuwa problem:

  1. Zastosuj poprawkę do Test / Dev / Staging / Prod (patrz wyżej), jeśli naprawdę działa
  2. Zastosuj poprawkę do swoich wirtualnych szablonów, aby przyszłe klony VM nie miały tego błędu
  3. Zastosuj poprawkę do fizycznego procesu instalacji (kickstart / autoyast / cokolwiek)
  4. Zastosuj poprawkę do WSZYSTKICH serwerów

Jeśli napotykasz masę serwerów, aby to naprawić, jest to proces, który musi być dobrze udokumentowany, a na koniec inny zespół powinien sprawdzić, czy poprawka została w pełni zastosowana.

W tym celu stosujemy Mantis (open source, PHP).


2

Zarządzam około 30 produktami i kilkuset serwerami w wielu krajach. Jestem menedżerem konfiguracji oprogramowania, więc nie mam dostępu do roota (zgodnie z projektem), nie dotykam baz danych ani ich serwerów (ponownie, zgodnie z projektem) i muszę skakać z wielu powodów ze względu na bezpieczeństwo korporacyjne. Ale zarządzam konfiguracjami testowymi, testowymi i produkcyjnymi, w tym łączami do baz danych i zmianami. Mam kilka skryptów, które wychodzą z serwerami przy użyciu kombinacji ssh, pythona Shell skryptów.

Najważniejsze rzeczy do przemyślenia to:

  1. Jakie rodzaje interakcji będziesz mieć ze swoimi serwerami? Tylko przesyłanie plików? Uruchamianie programów wiersza polecenia? Używasz zdalnych klientów X?
  2. Jaki poziom bezpieczeństwa jest potrzebny, aby uzyskać dostęp do tych serwerów? Zapory ogniowe, bezpieczne sieci, VPN? Czy sshwystarczy i znajduje się w bezpiecznym miejscu?
  3. Ile można zautomatyzować na każdym serwerze? Czy możesz zainstalować program na każdym serwerze i uruchomić go, czy też musisz przesyłać strumieniowo program przez coś takiego, jak sshuruchomić go zdalnie? Czy możesz napisać skrypt za pomocą expectwywołania z wiersza poleceń?

VirtualBox udostępnia wiele narzędzi wiersza poleceń, którymi można administrować za pomocą sshsystemów lub systemów takich puppetjak wspomina Ulrich.


2
Tylko mała sugestia. virtualbox, spójrz na vagrantup.com , może uprościć i zautomatyzować tworzenie wirtualnych obrazów.
Ulrich Dangel

Niestety nawet uzyskanie prostego dostępu do sieci między zdalnymi środowiskami testowymi jest prawie niemożliwe. Utworzenie farmy virtualbox byłoby jeszcze trudniejsze. Mam problem z proszeniem IT o aktualizację standardowego oprogramowania o to, co było nieaktualne od ponad roku, ponieważ nie jest ono częścią repozytoriów „standardowych RedHat”.
Arcege

Z mojego doświadczenia pomogło napisać, że nieaktualne oprogramowanie pokazuje albo, że jest to oprogramowanie typu EOL, albo występują problemy z bezpieczeństwem. Konfiguracja sieci / połączenia są często znacznie trudniejsze do osiągnięcia, może spróbuj podkreślić, w jaki sposób połączenie różnych środowisk testowych pomaga zaoszczędzić pieniądze, uprościć procesy, zaoszczędzić czas na kontroli jakości lub uczynić środowisko testowe bardziej realistycznym. Może to również pomóc, jeśli weźmiesz na pokład osoby z różnych oddziałów.
Ulrich Dangel
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.