87

Capistrano 食谱中“角色”的目的和功能是什么?当我查看示例食谱时,我经常会看到这样的内容:

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

所以看起来角色基本上是Capistrano 执行命令的服务器。如果是这样,那为什么将其称为“角色”而不是“主机”或“服务器”?

:app在上面的例子中,和:web角色有什么区别?

选项有什么作用:primary => true

4

2 回答 2

67

角色允许您编写仅适用于某些服务器的 capistrano 任务。这实际上只适用于多服务器部署。“app”、“web”和“db”的默认角色也在内部使用,因此它们的存在不是可选的(AFAIK)

在您提供的示例中,没有功能差异。

":primary => true" 是一个属性,它允许在自定义任务中指定服务器的更细粒度。

以下是任务定义中角色规范的示例:

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

有关更广泛的解释,请参阅 capistrano 网站 @ https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role 。

于 2009-07-20T19:28:57.890 回答
3

":primary => true" 选项表示数据库服务器是主服务器。例如,当您想通过 MySQL 使用复制时,这一点很重要。它允许您创建另一个可用于自动故障转移的镜像数据库服务器。它还用于决定应该在哪个数据库服务器上运行模型迁移(因为这些更改将被复制到故障转移服务器)。这个链接更澄清了一点:https ://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

于 2013-08-15T10:02:56.757 回答