在Capistrano 3中将文件从一个远程服务器上载到另一个远程服务器

时间:2015-11-12 21:35:13

标签: ruby file capistrano capistrano3

我有一个使用Capistrano 3.3.3部署的项目。有两种不同的服务器机器:一种是Web服务器(角色:app),另一种是DB(角色:db)。在数据库服务器上,我有一个Apache Solr服务,开发人员需要更新它的配置文件。这些配置文件存储在存储库中,其余包含项目代码。在部署期间,我需要将此文件上载到DB服务器到solr目录。我有一个传统的任务,它。

desc 'Solr config update'
task :update_solr_config do
  on roles(:app) do
    execute "scp -i /home/user/dbserver.pem #{current_path}/stack/data-config-menu-produccion.xml        user@dbserver:/usr/share/tomcat7/solr/menu/conf/data-config.xml"
    execute "scp -i /home/user/dbserver.pem #{current_path}/stack/data-config-promociones-produccion.xml user@dbserver:/usr/share/tomcat7/solr/promociones/conf/data-config.xml"
    execute "scp -i /home/user/dbserver.pem #{current_path}/stack/data-config-vista-produccion.xml       user@dbserver:/usr/share/tomcat7/solr/vista/conf/data-config.xml"
  end
end

但我想想如果有两个数据库服务器怎么办?那我怎么修改这个任务呢?

我已经了解了Capistrano的方法uploadputdownloadgettransfer。但我无法弄清楚哪些可以进行服务器 - 服务器文件传输。我建议将此任务应用于:db角色以迭代角色中的每个服务器。

desc 'Solr config update'
task :update_solr_config do
  on roles(:db) do
    ...Some magic goes here...
  end
end

感谢您的帮助。

0 个答案:

没有答案