Capistrano 3:仅在分配了角色的服务器池中的单个服务器上运行任务

2023-12-29

我有 20 台充当“Web”角色的服务器。我有一项任务只需要对其中一个执行,因为更改会影响共享存储。我当前的解决方案是解决这个问题的黑客(如下)。寻找更好的方法,我没有大量的 ruby​​ 或 cap 经验。

task :checkout_project_properties do
    num_runs = 0
    on roles(:web), in: :sequence do
        if num_runs > 0
            abort('Only running on one server.  Exiting')
        end
        execute("checkout-project-properties #{uc_stage} #{repo} #{branch}")
        num_runs += 1
    end
end

我假设你指的是你的生产配置,有这么多的网络服务器。在这种情况下,您的config/deploy/production.rb可能包含很多这样的行:

server 'web_1', roles: %w(web)
server 'web_2', roles: %w(web)
server 'web_3', roles: %w(web)
...

只需将其中一台服务器设为主要服务器,如下所示:

server 'web_1', roles: %w(web), primary: true
server 'web_2', roles: %w(web)
server 'web_3', roles: %w(web)
...    

然后更改您的任务,使其看起来像这样:

task :checkout_project_properties do
    on primary(:web) do
        execute("checkout-project-properties #{uc_stage} #{repo} #{branch}")
    end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Capistrano 3:仅在分配了角色的服务器池中的单个服务器上运行任务 的相关文章

随机推荐

  • Linq - 一个列表与另一个列表中的项目除外

    我认为我的问题很简单 但我是 linq 的新手 所以我在这里遇到了困难 我的系统调用一个名为 serviceTOP 的服务 它返回一个列表itemTOP Id Name 这些 ItemsTOP 不在我的系统中 但用户可以选择将哪个 item
  • 如何设置 Bluez 5 在配对期间询问 PIN 码

    我使用 QDbus 实现了 org bluez Agent1 接口 我想设置一个固定引脚 我将提供给用户 以便验证所有配对请求 并在引脚错误时拒绝它们 代理功能应为 NoInputNoOutput 因为该项目将部署在没有键盘或显示器的 Ra
  • 使用 ruby​​ rough gem 访问 git 日志数据?

    对于 git 存储库中的给定文件 我想查找修改该文件的最后一次提交的 SHA 以及时间戳 在命令行中 该数据对于特定文件路径的 git log 是可见的 例如 git log n 1 path to file 使用 ruby 的 git g
  • 使用 URL 打开 JQuery 选项卡,并在选项卡单击时向 URL 添加哈希值

    我正在开发一个 Web 应用程序 并且使用 JQuery UI Tabs 插件来分离数据 如果我将鼠标悬停在每个选项卡上 我可以在屏幕左下角看到该选项卡的 URL 例如 testPage com tab1 或 testPage com ta
  • WooCommerce 3.0+ 更改管理订单日期列格式

    在 WooCommerce 中 我使用下面的代码来更改订单日期列的管理订单视图格式 Woocommerce show time on order add filter post date column time custom post da
  • ++Var 和 Var++ 之间的区别[重复]

    这个问题在这里已经有答案了 在编程中 特别是在 Java 中 以下之间有什么区别 int var 0 var and int var 0 var 这会对 for 循环产生什么影响 e g for int i 0 i lt 10 i for
  • 输入字段添加点击时焦点可见

    仅当用户通过键盘导航到元素时 我才尝试有选择地在输入字段上应用大纲 根据我的理解 执行此操作的方法是删除焦点上的轮廓 但应用焦点可见 如下所示 input focus outline 2px solid transparent input
  • 使用 grep 搜索文件中的十六进制字符串

    有谁知道如何使用 grep 或类似工具来检索文件中十六进制字符串的偏移量 我有一堆十六进制转储 来自 GDB 我需要检查字符串 然后再次运行并检查值是否已更改 我努力了hexdump and dd 但问题是因为它是一个流 我丢失了文件的偏移
  • SQL - 在 A-F 之间查找名称的条件

    简单的问题 我需要一个解决方案 以便我可以找到 A F 之间的名称 包括所有以 F 开头的名称 如果您使用 BETWEEN 或 A gt value 笔记 用户将看到 2 个文本框 其中接受用户可以输入的范围 用户细化在 F 边界中走多远
  • 三星互联网强制深色模式

    我的网站是在浅色模式下设计的 不应该对任何形式的深色模式做出反应 这适用于除 Samsung Internet 之外的所有网站 每当我在三星互联网上打开网站时 它都会自动将白色背景替换为深色背景 并将字母颜色更改为白色 有谁知道如何解决这一
  • 在 neo4j 中我可以获得更简洁的 REST api 响应

    有没有一种方法可以在 neo4j 中获得更简洁的 Rest api 响应 也许只有节点数据 在每个请求上发送所有额外的数据似乎有点浪费带宽 为什么所有元数据都包含在响应中 例如 基本 api url 在整个过程中都是重复的 一旦您 有了节点
  • 使用 Dapper 进行批量插入花费的时间比预期的要长

    看完之后本文 https www gamasutra com view news 170502 Indepth SQL Server High performance inserts php我决定仔细研究一下我使用 Dapper 的方式 我
  • MapKit 注释和用户位置

    我按照本教程制作了我的第一个应用程序 http icodeblog com 2009 12 21 introduction to mapkit in iphone os 3 0 http icodeblog com 2009 12 21 i
  • .NET - 如何创建一个类,使得只有一个其他特定类可以实例化它?

    我想要进行以下设置 class Descriptor public string Name get private set public IList
  • AES 加密 PHP 到 NodeJS?

    我正在将一个小项目从 PHP 迁移到 NodeJS 其中包含一小部分 AES 加密 由于 PHP 代码运行良好 因此如下 function decysek data app key output openssl decrypt base64
  • 在 ASP.net MVC 中良好且完整地实现 RSS 提要

    我在 ASP NET MVC 中见过一些 RSS Feed 的示例 例如this https stackoverflow com questions 11915 rss feeds in aspnet mvc 以及项目中的一些示例 例如 O
  • 为什么 C、C++ 和 LISP 在嵌入式设备和机器人中如此流行?

    嵌入式设备和机器人最需要的软件语言技能似乎是 C C 和 LISP 为什么最近的语言没有进入这些应用程序 例如 Erlang http www erlang org 似乎特别适合机器人应用程序 因为它使并发编程变得更容易并且允许代码热交换
  • SQLite 支持公共表表达式吗?

    SQLite 支持公共表表达式吗 我想运行这样的查询 with temp ID Path as select ID Path from Messages select from temp 从 Sqlite 版本 3 8 3 开始 SQLit
  • 使用maven时spring配置文件放在哪里

    我正在尝试解决我的配置文件问题 我有具有此结构的 Spring MVC 应用程序 我当前的结构 src main java java classes src main resources some properties files src
  • Capistrano 3:仅在分配了角色的服务器池中的单个服务器上运行任务

    我有 20 台充当 Web 角色的服务器 我有一项任务只需要对其中一个执行 因为更改会影响共享存储 我当前的解决方案是解决这个问题的黑客 如下 寻找更好的方法 我没有大量的 ruby 或 cap 经验 task checkout proje