我有 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(使用前将#替换为@)