Uważam, że ciągle konfiguruję prawie identyczne serwery i VPS dla wielu moich klientów i może to być bardzo czasochłonne. Często jedyną rzeczą, która zmienia się między każdym wdrożeniem, jest inna witryna internetowa, która ma być obsługiwana. Czy istnieje prosty sposób na zautomatyzowanie tego wszystkiego i podjęcie nudnej monotonii konfiguracji 56 identycznych serwerów?
Serwery, które do tej pory wdrożyłem, to tylko Ubuntu, ale możliwe, że zacznę korzystać z innych systemów operacyjnych Linux, a nawet Windows. Do tej pory patrzyłem na Capistrano, ale wydaje się, że koncentruje się on na pisaniu małych programów rubinowych do wykonania zadania i nie mam żadnej wiedzy
vps
deployment
automation
Josh Hunt
źródło
źródło
Odpowiedzi:
Marionetka brzmi idealnie do tego, co próbujesz zrobić, z zastrzeżeniem, że na razie nie ma obsługi systemu Windows.
W twoim przypadku należy zdefiniować węzeł serwera pod względem wszystkich pakietów, które są identyczne na różnych komputerach. Następnie definiujesz poszczególne hosty jako węzły, które dziedziczą z serwera, i konfigurujesz dla niego określone unikalne elementy.
Marionetka jest deklaratywna - pozwala opisać twoje pudełka pod względem zasobów, które powinno posiadać każde pudełko. Więc jeśli chcesz
ssh
- piszesz klasę dla tego zasobu - a wewnątrz klasy możesz zawrzeć logikę o tym, jak ssh nazywa się nieco inaczej na FreeBSD w porównaniu z Ubuntu. Wie także, jak używaćyum
wewnątrz Redhata iapt-get
wewnątrz dystrybucji opartych na Debianie orazports
w BSD. Teraz w twoim węźle serwera będziesz miał po prostu linię podobną doinclude ssh
- a marionetka zrobi właściwą rzecz i umieści SSH na maszynie bez konieczności pamiętania, czy to Ubuntu, Redhat czy FreeBSD.Fajne jest to, że wszystkie elementy serwera znajdują się w jednym miejscu - i jeśli w dowolnym momencie dodasz definicję węzła serwera, WSZYSTKIE komputery odpowiednio zaktualizują swoją konfigurację.
W tej chwili zarządzam tylko trzema pudełkami za pomocą Puppet - ale to już się opłaciło. Po tygodniu spędzonym na ustawianiu pudełka, którego będziemy używać do prezentacji bodźca w eksperymencie, okazało się, że sterownik karty graficznej był zbyt stary w wersji Ubuntu, którą na niego włożyłem (8.04). Musiałem zainstalować najnowszą wersję Ubuntu (9.04), ale potem musiałem po prostu apt-get i uruchomić marionetkę - i wszystko, co spędziłem tydzień na konfiguracji, zostało przywrócone.
Puppet ma trochę krzywej uczenia się, ale udało mi się uniknąć nauki Ruby - wiem, że go używam, ponieważ tak napisano w Puppet - ale jak dotąd modyfikowałem przykłady w dokumentacja i przepisy na wiki . Inną wadą jest to, że marionetka zajmuje trochę czasu za pierwszym razem. Plusem jest to, że wszystko, co zmieniasz na wszystkich swoich komputerach, jest przechowywane w jednym miejscu - standardową praktyką jest utrzymywanie konfiguracji marionetek w systemie kontroli wersji - dzięki czemu zawsze możesz spojrzeć wstecz i zobaczyć, jak skonfigurowałeś serwery w przeszłości - lub wycofaj niektóre nieudane zmiany.
Wreszcie, oto krótkie wideo, które robi proste demo lalek, które szybko mnie rozpoczęło.
źródło
Możemy użyć Cobbler i Puppet dla produkcji i automatyzacji konfiguracji obu maszyn rzeczywistych i wirtualnych.
Cobbler łączy DHCP, PXE boot i Kickstart, aby wdrożenie było niczym więcej niż dodaniem profilu maszyny i naciśnięciem przycisku zasilania. W przypadku maszyn wirtualnych
koan
polecenie wykonuje (w naszym przypadku) magię Xen, aby rozpocząć instalację - podom0
prostu piszę:następnie
virsh console
obejrzyj budynek VPS bez żadnej interakcji.Używamy RHEL i mamy kilka profili skonfigurowanych do partycjonowania dysków, konfigurowania sieci i instalowania pakietów podstawowych dla różnych klas serwerów. Cobbler obsługuje rasy Debian i Ubuntu, ale nigdy tego nie próbowałem. Na bok: inne interesujące zastosowania Cobblera obejmują uruchamianie memtest ISO i aktualizacji oprogramowania układowego HP .
Gdy nasze systemy zostaną zbudowane z Cobbler Puppet przejmie konfigurację aplikacji, demony systemowe, rejestrację skrzynki w RHN itp. Puppet działa jako demon, który okresowo sprawdza, czy konfiguracja systemu odpowiada zdefiniowanym manifestom - wiesz, że Twoje aktualizacje już minęły do wszystkich serwerów. To także świetny sposób, aby upewnić się, że urządzenie, które nie było potrzebne do konserwacji, ma prawidłową konfigurację przed przywróceniem do eksploatacji.
Puppet naprawdę jest niesamowity. Nie musisz kontrolować każdego aspektu swojej konfiguracji - zacznij od zarządzania czymś prostym, co musisz skonfigurować na każdym urządzeniu (
sudoers
jest to przykład kanoniczny) i stamtąd. Upewnij się, że manifesty kukiełkowe również są wersjonowane; nic nie jest lepsze niż łatwość przywrócenia znanej dobrej konfiguracji bez konieczności pamiętania, co należy dostosować.źródło
Obecnie, gdzie pracuję, musimy zarządzać częścią naszej farmy serwerów, która obejmuje nieco ponad 300 serwerów Linux. Obejmuje to głównie HP Proliants, a następnie IBM 3850, niektóre bloki IBM, VMware ESX i niektóre KVM dla naszych wewnętrznych serwerów zarządzania.
szewc
Patrzyliśmy na szewca, ale problem polegał na tym, że szewc jest bardzo specyficzny dla RHEL / Red Hat. Musimy co najmniej wspierać RHEL i SLES, a Ubuntu będzie następny.
marionetka
Zastanawialiśmy się nad marionetką, ale później zdecydowaliśmy się tego nie robić, ponieważ zależy to od Ruby, co oznacza, że aktualizacja Ruby może potencjalnie uszkodzić nasz system zarządzania.
gorący drut
Hotwire jest tym, z czego korzystamy (opracowaliśmy wewnętrznie, ale jest oprogramowaniem typu open source) i robiliśmy to przez ostatnie kilka lat. Po pierwsze inwentaryzuje systemy, które mają zostać zbudowane, co oznacza inwentaryzację centrum danych, szafy, sprzętu, systemu operacyjnego, sieci itp., A po drugie wykonuje szybkie budowanie i wdrażanie. Po zbudowaniu systemu auto-inwentarz Hotwire utrzymuje ekwipunek w synchronizacji, a cfengine je utrzymuje. Hotwire wie o sprzęcie serwerowym, rozmawiając z danymi SMBIOS / DMI w Biosie przez python-dmidecode .
Punkty bonusowe polegają na tym, że łączy on proces inwentaryzacji i kompilacji w jeden, więc jest mniej do zarządzania, a funkcja inwentaryzacji na żywo jest świetna, ponieważ wiemy, że coś jest nie tak.
Wady polegają na tym, że interfejs użytkownika nadal wymaga dopracowania, a tu i tam pojawiają się błędy, ale rozwój jest wciąż gorący, a zgłaszane błędy są naprawiane stosunkowo szybko.
cfengine
Używamy cfengine, ponieważ poza nią i marionetką nie ma nic więcej. W rzeczywistości jest to dobre narzędzie, ale „dobre” tylko w zależności od tego, jak dobre są twoje polityki - jeśli ustawisz niebezpieczne polityki, wtedy mały błąd może spowodować wiele szkód. Na przykład, zgodnie z zasadami, nie „modyfikujemy” plików, albo je zastępujemy, albo nie. Również wszystkie zastąpione pliki mają nagłówek, dzięki któremu każda osoba, która je edytuje, wie, że zostanie zastąpione następnym razem (uruchamia się przez cron co godzinę).
Konfiguracja i wszystkie pliki wysyłane przez cfengine na serwery są również przechowywane w SCM, i używając haków po zatwierdzeniu, tam gdzie to możliwe, sprawdzamy składnię, a jeśli to się nie powiedzie, zatwierdzenie jest odrzucane. Jest to łatwe w przypadku ładnych aplikacji, takich jak Apache, ale nie tak łatwe w przypadku większości aplikacji korporacyjnych.
źródło
Odniosłem sukces z Puppet . Szef kuchni jest nowy. Aby uzyskać dłuższą listę opcji i tabelę porównawczą, zobacz artykuł w Wikipedii, Porównanie oprogramowania do zarządzania konfiguracją oprogramowania open source .
źródło
Do automatyzacji instalacji w zależności od systemu docelowego:
Do zarządzania konfiguracją na dodatek sugerowałbym użycie marionetki.
źródło
Mam duży sukces ze Puppet , ale musisz napisać dużo konfiguracji.
źródło
Kolejny głos na Puppet tutaj. Używamy go w szerokim zakresie do przeprowadzania wszystkich instalacji serwera i aplikacji oraz zarządzania konfiguracją. Ponad 200 węzłów i coraz więcej. Obsługa systemu Windows jest najwyraźniej w fazie rozwoju, ale w jakim stanie nie jestem pewien.
Nadal przyglądamy się początkowej stronie ładowania systemu operacyjnego, ale jak wspomniano powyżej, Cobbler wygląda interesująco. Obecnie używamy kombinacji uruchamiania PXE z preseedingem Debiana / Ubuntu, ale nie jest to optymalne.
źródło