【问题标题】:How do I access the current host's roles in Capistrano?如何访问 Capistrano 中当前主持人的角色?
【发布时间】:2018-07-18 19:21:06
【问题描述】:

我想在使用 capistrano 部署时访问 yml 模板文件中的当前主机/远程机器角色。

我的尝试

  • 我尝试查看是否有可用的 host 变量,但这似乎没有任何效果。

    • $CAPISTRANO:HOST$ 似乎适用于旧版本的 capistrano。

如何在模板化的 yaml 文件中执行类似伪代码的操作?

production: app_name: <%= TODO: IF HOST A/b/c -- App 1. If host Z -- app 2 %>

【问题讨论】:

  • 您是否希望 capistrano 在通过包含服务器和角色映射的 yml 文件后部署在服务器(远程机器)上?
  • @srajappa 我想根据文件部署到的服务器在 YAML 文件中设置不同的值。因此,对于服务器 A,我想设置“值 1”,对于服务器 B,我想设置“值 2”。
  • 我无法理解,你能用一些例子来说明一下吗,也许稍微编辑一下问题?
  • @srajappa 我添加了更多关于我希望如何配置配置文件的上下文。

标签: capistrano newrelic capistrano3


【解决方案1】:

据我了解,我以编程方式处理了类似的问题。

您可能知道,对于每个环境,config/deploy/ 目录中都有一个 .rb 文件。

在我们的问题中,我们有一个包含主机和角色信息的 YAML 文件,即。以下: A: - web - db - mongo B: - web - app

为了将这个角色应用到每个主机,我们迭代了这个 YAML 文件(ruby 很容易按照说明进行操作)并添加了一行代码。这是伪代码:

for host in HOST_LIST_YAML do for role in ROLE_LIST do role :role, %w{USER@host} end end

在这里,所有角色映射都应用于主机。同样,您可以在 environment.rb 文件中编写此代码。

【讨论】:

  • 我想我有相反的问题:我想获取角色信息(我们已经指定)并将其应用于我正在部署的配置文件。
猜你喜欢
  • 2016-05-18
  • 2013-04-27
  • 2021-12-15
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多