Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在Capistrano 3中将文件从一个远程服务器上载到另一个远程服务器_Ruby_File_Capistrano_Capistrano3 - Fatal编程技术网

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

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(

我有一个与Capistrano 3.3.3一起部署的项目。有两种不同的服务器机器:一种是webserver(角色:app),另一种是DB(角色:DB)。在DB服务器上,我有一个ApacheSolr服务,开发人员需要更新它的配置文件。这些配置文件与其他项目代码一起存储在存储库中。在部署期间,我需要将此文件上载到DB server的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
但是我在想如果有两台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服务器。