2009-07-20 14 views
76

Was ist der Zweck und die Funktion von "Rollen" in einem Capistrano-Rezept? Wenn ich auf Probe Rezepte sehen, ich sehe oft so etwas wie dieses:Was genau ist eine "Rolle" in Capistrano?

role :app, 'somedomain.com' 
role :web, 'somedomain.com' 
role :db, 'somedomain.com', :primary => true 

So sieht es aus wie eine Rolle ist im Grunde ein Server wo Capistrano Befehle ausführt. Wenn das der Fall ist, warum sollte es dann eine "Rolle" genannt werden und nicht ein "Host" oder "Server"?

Was ist im obigen Beispiel der Unterschied zwischen den Rollen :app und :web?

Was macht die :primary => true Option?

Antwort

60

Mit Rollen können Sie Capistrano-Aufgaben schreiben, die nur für bestimmte Server gelten. Dies gilt nur für Multi-Server-Bereitstellungen. Die Standardrollen "app", "web" und "db" werden auch intern verwendet, daher ist ihre Anwesenheit nicht optional (AFAIK)

In der von Ihnen bereitgestellten Stichprobe gibt es keinen funktionalen Unterschied.

Der ": primary => true" ist ein Attribut, das eine weitere Granularität beim Angeben von Servern in benutzerdefinierten Tasks ermöglicht. Hier

ist ein Beispiel für Rolle Spezifikation in einer Aufgabendefinition:

task :migrate, :roles => :db, :only => { :primary => true } do 
    # ... 
end 

Siehe Capistrano Website @https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role für eine ausführlichere Erklärung.

+2

Beachten Sie auch: Ihre Zeile sollte ': only => {: primary => true}' Ich denke ... oder der 'role' Befehl in der Frage sollte' verwenden: master => true' stattdessen. Ich glaube, dass diese Attribute völlig frei sind. –

3

Die Option ": primary => true" zeigt an, dass der Datenbankserver der primäre Server ist. Dies ist wichtig, wenn Sie beispielsweise die Replikation mit MySQL verwenden möchten. Sie können einen anderen gespiegelten Datenbankserver erstellen, der für das automatische Failover verwendet werden kann. Es wird auch verwendet, um zu entscheiden, auf welchem ​​Datenbankserver die Modellmigrationen ausgeführt werden sollen (da diese Änderungen auf die Failoverserver repliziert werden). Dieser Link klärt es ein wenig mehr: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration