Einige Hintergrundinformationen, ich benutze capistrino 2.9.0 und capistrano-ext 1.2.1. Die mehrstufige Bereitstellung funktioniert wie erwartet. Ebenso wie das Hinzufügen von Arrays von Servern zu den Rollen.
INSTANCES = ["this.server.com", "that.server.com"]
role(:web) {INSTANCES}
Ich habe versucht, :deploy_to dazu zu bringen, einen Pfad zu erzeugen, der auf dem Namen des Servers basiert, der bereitgestellt wird, etwa so:
set :deploy_to, lambda { "/var/www/application/$HOSTNAME" }
Das funktioniert ziemlich gut, außer dass this.server.com und that.server.com tatsächlich derselbe Host sind. In diesem Beispiel werden statt zwei Bereitstellungsordnern, die auf den in der Datei deploy/stage.rb definierten Servernamen basieren, nur ein Ordner /var/www/application/server.com/ erzeugt
Ich habe herumgegraben und nach einer Möglichkeit gesucht, dies entweder auf der Capistrano-Ebene zu injizieren oder eine Shell-Variable zu referenzieren, die diese Details beibehalten würde. Es scheint wie brauchen, um einen Anwendungsserver mit mehreren Instanzen einer Anwendung zu hosten wäre üblich.
Was ich wirklich brauche, ist:
set :deploy_to, lambda { "/var/www/application/$SERVER_NAME_CAP_IS_USING" }