我有一个使用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的方法upload
,put
,download
,get
和transfer
。但我无法弄清楚哪些可以进行服务器 - 服务器文件传输。我建议将此任务应用于:db角色以迭代角色中的每个服务器。
desc 'Solr config update'
task :update_solr_config do
on roles(:db) do
...Some magic goes here...
end
end
感谢您的帮助。