85 votes

Qu'est-ce qu'un "rôle" dans Capistrano ?

Quel est le but et la fonction des "rôles" dans une recette 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

Donc ça ressemble à un rôle est essentiellement un serveur où Capistrano exécute les commandes. Si c'est le cas, alors pourquoi l'appeler "rôle" plutôt que "hôte" ou "serveur" ?

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

Que fait le :primary => true option faire ?

66voto

codeprimate Points 681

Les rôles vous permettent d'écrire des tâches capistrano qui ne s'appliquent qu'à certains serveurs. Ceci ne s'applique réellement qu'aux déploiements multi-serveurs. Les rôles par défaut de "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 pas de différence fonctionnelle.

L'attribut ":primary => true" permet de spécifier les serveurs de manière plus granulaire 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

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

3voto

Bobby Wallace Points 66

L'option ":primary => true" indique que le serveur de base de données est le serveur primaire. Ceci est important lorsque vous voulez utiliser la réplication avec MySQL, par exemple. Elle 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 changements seront répliqués sur les serveurs de basculement). Ce lien clarifie un peu plus la situation : https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X