Vorteile
- Vereinfacht das Deploying durch weitreichende Automatisierung
- Plattformunabhängig (Ruby, Rails, PHP, Java etc.)
- Capistrano-Vorgänge (sog. „Recipes“) lassen sich testen
- Kann auf mehrere Ziel-Server verteilen
- Erfordert Ruby auf nur auf der lokalen Maschine, nicht auf den Zielmaschinen
- Nimmt alle Aufgaben ab, die sich über die Konsole abhandeln lassen
- Lässt bei Fall-zu-Fall-Fragen den Anwender entscheiden
- Man kann einzelne Aufgaben (sog. „Tasks“) separat aufrufen
- Kann Anwendungen abschalten und stattdessen eine Maintenance-Seite ausliefern
- Kann Sessions nach einer bestimmten Zeit automatisch beenden
- Kann Anwendungen starten
- Sehr gut lesbar dank der Ruby-Syntax
- Könnte man auf einer beliebigen Maschine während der Recipe-Entwicklung ausführen
- Keine Flüchtigkeitsfehler wie bei manuellem Deploying möglich
- Kann auch sudo-Anweisungen verteilen
Nachteile
- Kann bei mehren Zielmaschinen nicht mehr mit normalen Credentials arbeiten, sondern erfordert SSH-Keys
- Könnte einige Einschränkungen bei Nicht-Ruby-Sprachen aufweisen
Links
Diskussion ausdrücklich erwünscht
Habe ich etwas vergessen oder sehe ich etwas falsch? Welche Nachteile sollte man noch berücksichtigen? Welche Literatur ist noch zu empfehlen?
Capistrano-Recipes werden im Prinzip nur in Ruby geschrieben, führen aber Konsolenanweisungen aus. SVN-Export, DB-Migrationen etc. sind dadurch automatisierbar. Die Sprache des betroffenen Projektes spielt dabei eigentlich keine Rolle.
Aber praktische Erfahrung außerhalb von Rails-Projekten habe ich bislang noch nicht gesammelt.
Ich nutze bisher Vlad 1.4.0 für das Deployment von symfony-, Rails- und anderen Rack-Anwendungen. Zufrieden bin ich damit aber aus vielerlei Gründen nicht und werde mir daher auch mal Capistrano ansehen (müssen).
Vielen Dank für die Auflistung und Infos über Vorteile und Nachteil. Wer sich etwas mehr über Capistrano und der Rails Application einlesen möchte kann auf das sehr gute EBook von Tom Mornini und Marc Loy (Capistrano and the Rails Application Lifecycle) zugreifen.
Bastian
12.11.2009
Hi,
habe gar nicht gewußt, dass Capistrano auch NonRails kann. Hast Du dass schon mal für ein PHP&MySQL-Projekt benutzt?
Wenn ja würde mich ein Erfahrungsbericht extrem interessieren!
Gruß
Bastian