Qu'est-ce qu'un «rôle» exactement chez Capistrano?

86

Quel est le but et la fonction des «rôles» dans une recette de Capistrano? Quand je regarde des exemples de recettes, je vois souvent quelque chose comme ceci:

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

Il semble donc qu'un rôle soit essentiellement un serveur sur lequel Capistrano exécute des commandes. Si tel est le cas, pourquoi serait-il appelé un «rôle» plutôt qu'un «hôte» ou un «serveur»?

Dans l'exemple ci-dessus, quelle est la différence entre les rôles :appet :web?

Que fait cette :primary => trueoption?

Ethan
la source

Réponses:

67

Les rôles vous permettent d'écrire des tâches capistrano qui ne s'appliquent qu'à certains serveurs. Cela ne s'applique vraiment qu'aux déploiements multi-serveurs. Les rôles par défaut "app", "web" et "db" sont également utilisés en interne, leur présence n'est donc pas facultative (AFAIK)

Dans l'exemple que vous avez fourni, il n'y a aucune différence fonctionnelle.

«: Primary => true» est un attribut qui permet une plus grande granularité dans la spécification des serveurs dans les tâches personnalisées.

Voici un exemple de spécification de rôle dans une définition de tâche:

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

Consultez le site Web capistrano @ https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role pour une explication plus détaillée.

codeprimate
la source
2
Notez également: votre ligne devrait être :only => { :primary => true }je pense ... ou la rolecommande dans la question devrait utiliser à la :master => trueplace. Je pense que ces attributs sont entièrement de forme libre.
docwhat
3

L'option ": primary => true" indique que le serveur de base de données est le serveur principal. Ceci est important lorsque vous souhaitez utiliser la réplication avec MySQL, par exemple. Il vous permet de créer un autre serveur de base de données en miroir qui peut être utilisé pour le basculement automatique. Il est également utilisé pour décider sur quel serveur de base de données les migrations de modèles doivent être exécutées (car ces modifications seront répliquées sur les serveurs de basculement). Ce lien clarifie un peu plus les choses: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

Bobby Wallace
la source