Wdrożenie aplikacji za pomocą Puppet

10

Jestem nowy w Puppet i chociaż korzystam z systemów * nix od wielu lat, nigdy nie pracowałem jako sysadmin ani w operacjach.

Obecnie piszę manifesty Puppet do obsługi zestawu aplikacji internetowych (PHP / MySQL / MongoDB, kod w git). Najwyraźniej Puppet musi mieć trochę wiedzy na temat rzeczywistych aplikacji, ponieważ dla każdego z nich skonfiguruję wirtualny host, ale nie jestem pewien, czy Puppet powinien zarządzać takimi rzeczami, jak wdrażanie kodu i tworzenie bazy danych.

Czy Puppet jest odpowiednim narzędziem do wdrażania aplikacji? Jeśli nie, czy możesz polecić bardziej odpowiednie narzędzie?

michaeltwofish
źródło
3
Jeśli przyjdziesz do tego później, wszystkie odpowiedzi są dobre, nie czytaj tylko tej, którą wybrałem jako odpowiedź.
michaeltwofish

Odpowiedzi:

10

Zajrzałbym do Capistrano lub Fabric do wdrożeń ..

Dzięki tym dwóm narzędziom będziesz mieć lepszą kontrolę nad sposobem wdrażania.

Mikrofon
źródło
Dałem +1 tej odpowiedzi, ponieważ dała dwa rozwiązania.
François Beausoleil
Doceniam wskazówki. Mamy Ruby gdzie indziej na naszym stosie, więc popatrzę na Capistrano.
michaeltwofish
9

Puppet jest używany do wdrażania w wielu dużych organizacjach, ale nie zawsze jest idealny. Wiele z nich zależy od metodologii wdrażania. Czy wdrażasz na wielu komputerach jednocześnie? Czy wykonujesz wdrożenia cykliczne?

Niektóre organizacje korzystają z Puppet, budując pakiety swoich wdrożeń, a następnie wprowadzając zasady wymuszające stosowanie marionetek w celu uzyskania właściwej wersji tego pakietu. Ponieważ marionetka zawiera koncepcję środowisk, możesz używać środowisk do wykonywania wdrożeń etapami (na przykład tworzenie, testowanie, prod).

Inne organizacje używają marionetki do organizowania wdrażania, odpalając rsync, git checkout lub niektóre rekurencyjne kopie plików przy użyciu marionetki (choć jest to dość powolne).

Istnieją również inne całkiem dobre narzędzia do wdrożenia. W przeszłości korzystałem z Whisky Disk (proste narzędzie do rubinów) i bardzo mi się podobało.

(Uwaga, pracuję w Puppet Labs)

stahnma
źródło
Dzięki. Wdrożenia są na dwóch zrównoważonych serwerach, obecnie używających ręcznego rsync.
michaeltwofish
4

Jeśli chcesz zbudować pakiet z aplikacji, możesz zajrzeć do FPM . Kod znajduje się na GitHub .

François Beausoleil
źródło
Dzięki za wskazówkę. W tym przypadku nie budujemy pakietów, ale FPM wygląda interesująco i możemy go wykorzystać do innych zadań.
michaeltwofish,
4

Moim zdaniem Puppet nie jest odpowiednim narzędziem do wdrażania aplikacji.

Używam Jenkinsa do budowania i wdrażania naszego kodu do testowania i przemieszczania.

Jenkins jest pierwotnie serwerem ciągłej integracji, ale jest naprawdę elastyczny i modułowy. Istnieje wiele wtyczek dla Jenkins, które mogą pomóc we wdrożeniu aplikacji:

Dla naszej aplikacji skonfigurowałem Jenkins z funkcją Publikuj przez SSH, która kopiuje pomyślnie zbudowany plik WAR na serwer docelowy, a następnie wykonuje skrypt, który wykonuje kopię zapasową i wdraża. Mam nadzieję że to pomoże!

pkhamre
źródło
Używamy Jenkins dla CI, więc jest to zdecydowanie interesująca opcja do odkrywania, dzięki.
michaeltwofish,
1

Puppet nie jest tak naprawdę przeznaczony do wdrożenia, ponieważ gdy w grę wchodzi duża liczba plików, mogą wystąpić problemy. Możesz zajrzeć do capistrano w celu wdrożenia aplikacji.

http://rubyforge.org/projects/capistrano/

johnshen64
źródło