Capistrano是否可以仅链接某些服务器上的文件?

时间:2020-01-09 18:00:58

标签: ruby capistrano

如果我有这样的东西:

config / deploy / production.rb:

server myserver1 roles: %i[app web db]
server myserver2 roles: %i[app web db]
server myutilserver1 roles: %[util]

config / deploy.rb:

append :linked_files, 'all_servers_file.yml'
append :linked_files, 'util_server_file.yml'

是否有某种方法可以解决此问题,以使util_server_file.yml仅链接到myutilserver1上,但是all_servers_file.yml仍然适用于所有服务器?还是这是全有还是全无的情况?

1 个答案:

答案 0 :(得分:0)

您可能可以为这些服务器定义其他角色

server myserver1 roles: %i[app web db utils_server_file]
server myserver2 roles: %i[app web db all_servers_file]

然后指定每个任务应在哪些角色上运行:

append :linked_files, 'all_servers_file.yml', roles: %i[all_servers_file]
append :linked_files, 'util_server_file.yml', roles: %i[utils_server_file]

尽管此解决方案似乎很hacku,也许还有更好的方法。但是要知道-我们需要了解上下文,这是两台服务器之间特定文件的区别。