Evaluierung von Capistrano

Da Automatisierung eine tolle Sache ist und unser Deploying-Prozess und -Setup beim Trusted Shops sehr komplex bzw. umfangreich ist, hatte ich in der IT-Abteilung den Vorschlag gemacht, Capistrano für die Vereinfachung, Beschleunigung des Prozesses und Reduzierung der Fehleranfälligkeit einzusetzen. Hier habe ich mal Vor- und Nachteile zusammengefasst.

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?

veröffentlicht am 12.11.2009 um 12:58 von Martin Labuschin in ,


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

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.

blog comments powered by Disqus
The Ruby on Rails Link Library Spanning Sync SEO-Dokumentation Gowalla
ProWebApps WellDone (β) Pinboard (α) Netzwerk Münsterland
Blogs Bücher Frameworks iPhone Mac Web-Apps