Was genau ist eine „Rolle“ in Capistrano?

86

Was ist der Zweck und die Funktion von "Rollen" in einem Capistrano-Rezept? Wenn ich mir Beispielrezepte ansehe, sehe ich oft so etwas:

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

Es sieht also so aus, als wäre eine Rolle im Grunde ein Server, auf dem Capistrano Befehle ausführt. Wenn dies der Fall ist, warum sollte es dann eher als "Rolle" als als "Host" oder "Server" bezeichnet werden?

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

Was macht die :primary => trueOption?

Ethan
quelle

Antworten:

67

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

In dem von Ihnen angegebenen Beispiel gibt es keinen funktionalen Unterschied.

Das ": primary => true" ist ein Attribut, das eine weitere Granularität bei der Angabe von Servern in benutzerdefinierten Aufgaben ermöglicht.

Hier ist ein Beispiel für die Rollenspezifikation in einer Aufgabendefinition:

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

Weitere Informationen finden Sie auf der Capistrano-Website unter https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role .

Codeprimate
quelle
2
Beachten Sie auch: Ihre Zeile sollte :only => { :primary => true }meiner Meinung nach sein ... oder der roleBefehl in der Frage sollte :master => truestattdessen verwendet werden. Ich glaube, diese Attribute sind völlig frei.
docwhat
3

Die Option ": primary => true" gibt an, dass der Datenbankserver ein Primärserver ist. Dies ist wichtig, wenn Sie beispielsweise die Replikation mit MySQL verwenden möchten. Sie können damit einen weiteren 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 Failover-Server repliziert werden). Dieser Link verdeutlicht es ein bisschen mehr: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

Bobby Wallace
quelle