Jeden szef kuchni rządzi nimi wszystkimi

10

Ja patrząc na szefa zautomatyzować Magento wdrożenia - zarówno w standardowych Magento opcji hostingu, a także środowisk takich jak EC2. Poszukałem go i widzę wiele przepisów, ale żaden z nich nie wydaje mi się kanoniczny. Czy jest jakiś konkretny scenariusz szefa kuchni, który jest lepszy / najlepszy? Ponadto, jeśli wcześniej zajmowałeś się rozmieszczaniem szefów kuchni w PHP, czego chciałbyś wiedzieć, kiedy zaczynałeś?

Alan Storm
źródło
2
Chciałbym wiedzieć, że istnieje Ansible ( ansible.com/home ).
Reid Blomquist
Inne alternatywy, jeśli jesteś zainteresowany, saltstack.com i docker.com . Oba wyglądają obiecująco, ale nie miałem okazji z nimi pracować.
beeplogic
1
Eksperymentowałem z popiołem capistrano: github.com/augustash/capistrano-ash
pzirkind
Myślę, że Reid coś polubił, Alan re: Ansible. Nie wymaga agenta (działa z ssh + klucze) do zainstalowania na klientach, jest to system deklaratywny, więc jest idempotentny i ogólnie stwierdziłem, że użycie go pozostawia mi „zrób jedną rzecz, zrób to po prostu, i zrób to dobrze ”w stylu uniksowym w porównaniu do bardziej niezawodnych systemów, takich jak szef kuchni, marionetka i sól. Minęło trochę czasu, odkąd opublikowałeś to pierwotnie, jakieś aktualizacje twoich myśli po dłuższej pracy z szefem kuchni?
Bryan „BJ” Hoffpauir Jr.

Odpowiedzi:

6

Jest prawie niemożliwe, aby mieć jeden zestaw uniwersalnych procedur. Odniosłem sukces, pisząc skrypt Bash, który wykonuje polecenia chef-clientna listach hostów dostarczonych przez knife search. Procedury wyglądają tak…

Serwer Open Source Chef Server 10.18.2 na Ubuntu 12.04 LTS

  1. Zainicjuj zmienne
  2. Pobierz najnowszą wersję skrótu z GitHub dla $branch
  3. Wyłącz monitorowanie dostępności, aby zapobiec alertom o statusie HTTP 503
  4. Przełącz wszystkie hosty internetowe i narzędzia do trybu konserwacji
  5. Wdróż narzędzie
    1. Zatrzymaj crona Magento i wszystkich pracowników Resque
    2. Adres zależności systemu plików
    3. Szef kuchni sprawdza zdefiniowaną wersję jako nową wersję
    4. Adres zależności Magento (pakiety, moduły, system plików, uprawnienia)
    5. Zaktualizuj wszystkie zadania CRON i skrypty do automatyzacji
    6. Wdróż wszystkie moduły (kompozytor)
    7. Wyczyść pamięć podręczną za pomocą n98-magerun.phar
    8. Uruchom wszelkie migracje za pomocą n98-magerun.phar
    9. Ponownie włącz Magento cron
    10. Uruchom Resque pracowników
  6. Wdróż pierwszego hosta internetowego
    1. Adres zależności systemu plików
    2. Szef kuchni sprawdza zdefiniowane $revisionjako nowe wydanie
    3. Adres zależności Magento
    4. Wdróż wszystkie moduły Magento
  7. Oznacz nowe wdrożenie w New Relic
  8. Włącz usługi monitorowania dostępności
  9. Wyłącz usługi równoważenia obciążenia dla wszystkich innych hostów internetowych
  10. Kontynuuj wdrażanie na hostach internetowych, kolejno przełączając je do trybu online
  11. Wykonuj procedury szefa kuchni dla hostów wyszukiwania

Źródło: https://gist.github.com/parhamr/6177160#file-2-deployment

parhamr
źródło
4

To jak mam podchodzić tego obszaru podczas noszenia Wanna Be sysadmin / devops rolę. Większość poniższych będzie tylko ogólnymi zasadami, których staram się przestrzegać, a nie specyficznymi dla Szefa Kuchni.

Skończyłem z Puppet, ponieważ znalazłem w tym czasie więcej zasobów i czułem się łatwiejszy do odebrania.

Spojrzałem na różne gotowe moduły dostępne dla takich rzeczy jak apache, php5 itp. Wiele z nich wydawało się robić znacznie więcej, niż potrzebowałem i będąc tak obeznanym z platformą, nie wierzyłem, co się dzieje. Uznałem, że łatwiej będzie mi po prostu określić, co powinienem zrobić na każdym typie węzła.

Proces rozpocząłem od udostępnienia lokalnego środowiska programistycznego zespołu (vargrant + pudełko wirtualne). Dla każdej usługi / komponentu stworzyłem moduł: php5, apache2, redis, mysql itp.

Gdy środowisko programistyczne było stabilne / działało, zacząłem budować środowisko QA. Zdefiniowałem ogólne typy węzłów dla serwerów WWW, redis, lakierów itp., Które ponownie wykorzystały te same moduły co dev. Po wykonaniu tej czynności etapowe i produkcyjne potrzebne były minimalne zmiany, aby rozpocząć i uruchomić.

Podczas pisania i pisania swoich przepisów / szablonów powinieneś rozważyć, w jaki sposób można je ponownie wykorzystać / uogólnić. Nie koduj na stałe takich rzeczy, jak ścieżki lub użytkownik / grupa, które mogłyby się zmieniać między dystrybucjami / projektami / środowiskami. Ponieważ patrzysz na uogólnione podejście, przypuszczam, że dużą przeszkodą będzie radzenie sobie z różnicami między rozkładami * nix.

Co najważniejsze, utrzymanie jest proste. Zautomatyzuj / standaryzuj najważniejsze / czasochłonne części środowiska. Iteruj, ewoluuj.

beeplogic
źródło