2014-06-16 6 views
10

Wie stellen Sie nur einen Server mit Capistrano v3 bereit? Alle Lösungen, die ich dort gefunden habe, werden auf jedem Server bereitgestellt, also würde ich annehmen, dass sie für v2 sind.Wie stellen Sie nur einen Server mit Capistrano v3 bereit?

Ich möchte keine Bühne bereitstellen, ich verwende bereits Multistage und möchte in einer der Phasen nur auf einem Server bereitstellen.

+0

Was sind "alle Lösungen, die du gefunden hast"? Bitte geben Sie einige Hinweise, was nicht funktionieren wird, um zu vermeiden, dass Zeit für nicht hilfreiche Antworten verschwendet wird. –

+1

Sieht so aus, als müssten Sie den HOST- und ROLE-Filter verwenden. Hast du es wie im folgenden Link beschrieben ausprobiert? http://capistranorb.com/documentation/advanced-features/role-filtering/ Ähnliche Fragen wurden auch in folgendem Link gefunden: http://stackoverflow.com/questions/20783552/can-capistrano-v3-specify-hosts- in-command-line-like-v2-does? rq = 1 – leenasn

+0

Meine Antwort funktionierte für Sie? – gpupo

Antwort

5

Wie bereits erwähnt, wird in Capistrano 3 die Bereitstellung bestimmter Teile Ihrer App auf einem einzelnen Server mit HOST filtering ausgeführt. Stellen wir uns vor, dass Sie direkt mit der Produktion bereitstellen und haben diese Konfiguration in config/deploy/production.rb

set :stage, :production 


server "webserver1.example.com”,   roles: [:web] 

server "appserver1.example.com",   roles: [:app]     
server "appserver2.example.com",   roles: [:app]     
server "appserver3.example.com",   roles: [:app]       

server “dbserver1.example.com”,   roles: [:db] 
server “dbserver2.example.com”,   roles: [:db] 


Dann, wenn Sie nur auf Ihre webserver1 bereitstellen möchten, müssen Sie nur den Befehl ausführen:

cap --hosts=webserver1.example.com production deploy 
+0

Ich laufe cap --host = foo production deploy und doch, capistrano, gegen Ende der Bereitstellung dieser Rails-Anwendung, verbindet sich mit bar, um einige Aufgaben auszuführen und schlägt fehl, weil das Release-Verzeichnis nicht existiert. – Pablo

1

Sie müssen die Einstellungen mehrstufig verwenden.

Capistrano 3.x ist mehrstufig standardmäßig.

In einer seiner Phase definieren Sie nur den Server, den Sie möchten.

set :stage, :staging 

server 'staging.zodiacmedia.co.uk', roles: %w{web app db}, port: 22 

set :deploy_to, '/var/www/staging.example.com' 

Run-Befehl:

cd /home/deploy/capistrano/example 
cap staging something:to:do 

Diese tutorial alt ist, aber können Ihnen helfen.

+1

Ich verwende bereits mehrstufig. Ich möchte nicht auf einer Stufe bereitstellen, sondern auf einer von vielen Servern in einer der Stufen. – Pablo