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 ça:
role :app, 'somedomain.com'
role :web, 'somedomain.com'
role :db, 'somedomain.com', :primary => true
Il ressemble donc à un rôle est essentiellement un serveur où Capistrano exécute des commandes. Si tel est le cas, pourquoi serait-il appelé un "rôle" plutôt qu'un "hôte" ou "serveur"?
Dans l'exemple ci-dessus, quelle est la différence entre le :app
et :web
rôles?
Que fait le :primary => true
option faire?
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, donc leur présence n'est pas facultative (AFAIK)
Dans l'exemple que vous avez fourni, il n'y a pas de différence fonctionnelle.
": Primary => true" est un attribut qui permet une granularité supplémentaire 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
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.
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èle doivent être exécutées (car ces modifications seront répliquées sur les serveurs de basculement). Ce lien le clarifie un peu plus: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration