卡皮斯特拉诺的“角色”究竟是什么?

时间:2009-07-20 18:45:54

标签: ruby-on-rails ruby capistrano

Capistrano配方中“角色”的目的和功能是什么?当我查看样本食谱时,我经常会看到类似的东西:

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

因此看起来角色基本上是服务器,而Capistrano执行命令。如果是这样的话,为什么它会被称为“角色”而不是“主机”或“服务器”?

在上面的示例中,:app:web角色之间有什么区别?

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

2 个答案:

答案 0 :(得分:64)

角色允许您编写仅适用于某些服务器的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

答案 1 :(得分:3)

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