Capistrano中的“角色”到底是什么?


86

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

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

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

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

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

Answers:


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,以获得更广泛的解释。


2
还要注意::only => { :primary => true }我认为您的行应该...或问题中的role命令应:master => true改为使用。我相信这些属性完全是自由格式的。
docwhat 2010年

3

“:primary => true”选项表明数据库服务器是主服务器。例如,这对于要在MySQL上使用复制非常重要。它允许您创建另一个可用于自动故障转移的镜像数据库服务器。它还用于确定应在哪个数据库服务器上运行模型迁移(因为这些更改将被复制到故障转移服务器)。该链接对其进行了更多说明:https : //github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.