【问题标题】:Capistrano: create tasks with roles did not workCapistrano:使用角色创建任务不起作用
【发布时间】:2013-03-01 16:07:41
【问题描述】:

我尝试创建具有不同角色的任务:

namespace :foo do
  task :mytasks, :roles => [:a, :b,] do
    task_a
    task_b
  end

  task :task_a, :roles => :a do
    run 'echo A'
  end

  task :task_b, :roles => :b do
    run 'echo B'
  end
end

当我执行“mytasks”时,结果如下:

$ cap -n ROLES=b foo:mytasks
  * 2013-03-01 16:59:14 executing `foo:mytasks'
  * executing "echo A"
  * executing "echo B"

所有任务都被执行,为什么?

【问题讨论】:

    标签: ruby capistrano


    【解决方案1】:

    Capistrano Roles 旨在将给定服务器(或多个服务器)与特定功能相关联,例如说“machine-a”是 Web 服务器,而“machine-b”是数据库服务器,这很有用,因为某些任务只需要在某些机器上执行。

    因此,角色并不是一种在您运行 Capistrano 时有条件地选择在哪些机器上运行任务的方法,它们只是选择应该在哪些机器上运行哪些任务。

    不过,还有另一个名为 Multistage 的 Capistrano 功能可能正是您想要的。它允许您根据要部署到的“阶段”指定不同的服务器集(甚至将它们与不同的角色相关联)。因此,您可以有 ab 阶段,每个阶段都有单独的服务器集,您可以使用以下方法进行部署:

    cap a foo:mytasks
    cap b foo:mytasks
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 2011-09-25
      相关资源
      最近更新 更多