Ruby 在Capistrano 3中将文件从一个远程服务器上载到另一个远程服务器
我有一个与Capistrano 3.3.3一起部署的项目。有两种不同的服务器机器:一种是webserver(角色:app),另一种是DB(角色:DB)。在DB服务器上,我有一个ApacheSolr服务,开发人员需要更新它的配置文件。这些配置文件与其他项目代码一起存储在存储库中。在部署期间,我需要将此文件上载到DB server的solr目录。我有一个传统的任务,使它Ruby 在Capistrano 3中将文件从一个远程服务器上载到另一个远程服务器,ruby,file,capistrano,capistrano3,Ruby,File,Capistrano,Capistrano3,我有一个与Capistrano 3.3.3一起部署的项目。有两种不同的服务器机器:一种是webserver(角色:app),另一种是DB(角色:DB)。在DB服务器上,我有一个ApacheSolr服务,开发人员需要更新它的配置文件。这些配置文件与其他项目代码一起存储在存储库中。在部署期间,我需要将此文件上载到DB server的solr目录。我有一个传统的任务,使它 desc 'Solr config update' task :update_solr_config do on roles(
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
但是我在想如果有两台DB服务器会怎么样?那么我该如何修改这个任务呢
我读过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
谢谢任何帮助。
没有代码> SCP < /Cord>选项,一次将文件复制到许多主机,只通过列表迭代。我知道这不是完全回答您所问的问题,但我真的会考虑在这一点使用配置工具,比如厨师、安布尔、木偶,我觉得使用Capistrano进行配置也有类似的诱惑,但如果您从服务器资源调配开始进行代码部署,随着时间的推移,它将变得更干净、更易于维护。我使用Chef,它工作得很好,但也听说过Ansible的好东西。@3ёёы问题是我不想使用scp
,问题是如何使用Capistrano将文件从web服务器拉到db服务器。