Anwendungsbereitstellung mit Puppet

10

Ich bin neu bei Puppet und während ich * nix-Systeme seit vielen Jahren benutze, habe ich nie als Systemadministrator oder in Ops gearbeitet.

Ich schreibe derzeit Puppet-Manifeste für das Hosten einer Reihe von Webanwendungen (PHP / MySQL / MongoDB, Code in Git). Natürlich muss Puppet einige Kenntnisse über die tatsächlichen Anwendungen haben, da ich für jede einen virtuellen Host einrichten werde, aber ich bin mir nicht sicher, ob Puppet Dinge wie die Codebereitstellung und die Datenbankerstellung verwalten soll.

Ist Puppet ein geeignetes Tool für die Anwendungsbereitstellung? Wenn nicht, können Sie ein geeigneteres Tool empfehlen?

michaeltwofish
quelle
3
Wenn Sie später darauf zurückkommen, sind alle Antworten gut. Lesen Sie nicht nur die, die ich als Antwort gewählt habe.
michaeltwofish

Antworten:

10

Ich würde entweder Capistrano oder Fabric für Bereitstellungen untersuchen.

Mit diesen beiden Tools haben Sie eine bessere Kontrolle darüber, wie die Bereitstellung erfolgt.

Mike
quelle
Ich + 1 hatte diese Antwort, weil es zwei Lösungen gab.
François Beausoleil
Ich schätze die Hinweise. Wir haben Ruby an anderer Stelle in unserem Stapel, also werde ich mir Capistrano ansehen.
michaeltwofish
9

Puppet wird für Bereitstellungen in vielen großen Organisationen verwendet, ist jedoch nicht immer perfekt. Vieles davon hängt von Ihrer Bereitstellungsmethode ab. Stellen Sie auf vielen Computern gleichzeitig bereit? Führen Sie fortlaufende Bereitstellungen durch?

Einige Organisationen verwenden Puppet, indem sie Pakete ihrer Bereitstellungen erstellen und dann die Puppet-Durchsetzungsrichtlinie so einstellen, dass sie die richtige Version dieses Pakets aufweist. Da Puppet das Konzept von Umgebungen enthält, können Sie Umgebungen verwenden, um Bereitstellungen schrittweise durchzuführen (z. B. dev, test, prod).

Andere Organisationen verwenden Puppet, um die Bereitstellung zu orchestrieren, indem sie entweder einen Rsync-, Git-Checkout- oder einige rekursiv-Dateikopien mit Puppet auslösen (obwohl dies ziemlich langsam ist).

Es gibt auch andere ziemlich gute Tools für die Bereitstellung. Ich habe in der Vergangenheit Whiskey Disk (ein einfaches Ruby-Tool) verwendet und es hat mir sehr gut gefallen.

(Haftungsausschluss, ich arbeite bei Puppet Labs)

stahnma
quelle
Vielen Dank. Die Bereitstellung erfolgt auf zwei ausgeglichenen Servern, die derzeit manuelles rsync verwenden.
michaeltwofish
4

Wenn Sie ein Paket aus Ihrer Anwendung erstellen möchten, können Sie sich mit FPM befassen . Code ist auf GitHub .

François Beausoleil
quelle
Danke für den Tipp. In diesem Fall erstellen wir keine Pakete, aber FPM sieht interessant aus und kann für andere Aufgaben verwendet werden.
michaeltwofish
4

Puppet ist meiner Meinung nach nicht das geeignete Tool zum Bereitstellen von Anwendungen.

Ich verwende Jenkins zum Erstellen und Bereitstellen unseres Codes zum Testen und Staging.

Jenkins ist ursprünglich ein Server für die kontinuierliche Integration, aber er ist sehr flexibel und modular. Es gibt viele Plugins für Jenkins, mit denen Sie Ihre Anwendungen bereitstellen können:

Für unsere Anwendung habe ich Jenkins mit Publish over SSH konfiguriert, das eine erfolgreich erstellte WAR-Datei auf den Zielserver kopiert und dann ein Skript ausführt, das die Sicherung und Bereitstellung durchführt. Hoffe das hilft!

pkhamre
quelle
Wir verwenden Jenkins für CI, daher ist dies definitiv eine interessante Option, die es zu erkunden gilt, danke.
michaeltwofish
1

Puppet ist nicht wirklich für die Bereitstellung konzipiert, da bei einer großen Anzahl von Dateien Probleme auftreten können. Sie können in capistrano nach App-Bereitstellung suchen.

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

johnshen64
quelle