Как скопировать файл на кучу серверов с помощью capistrano - PullRequest
5 голосов
/ 14 июня 2011

Я часто использую cap invoke для запуска команд на нескольких серверах. Я также хотел бы использовать capistrano для передачи одного файла на несколько серверов.

Сначала я думал, что PUT сделает это, но put заставляет вас создавать данные для файла. Я не хочу этого делать, я просто хочу скопировать существующий файл с машины, на которой я запускаю команду capistrano, на другие машины.

Было бы здорово, если бы я мог сделать что-то вроде этого:

host1$ cap HOSTS=f1.foo.com,f2.foo.com,f3.foo.com COPY /tmp/bar.bin 

Я ожидаю, что это скопирует host1: /tmp/bar.bin в f1.foo.com:/tmp/bar.bin и f2.foo.com:/tmp/bar.bin и f3.foo.com: /tmp/bar.bin

Подобные вещи кажутся очень полезными, поэтому я уверен, что должен быть способ сделать это ...

Ответы [ 4 ]

10 голосов
/ 15 июня 2011
upload(from, to, options={}, &block)

Действие загрузки сохраняет файл по указанному пути на всех серверах, на которые нацелено текущее задание.

Если вы когда-либо использовали задачу deploy: upload ранее, то вы, возможно, уже знаете, как работает этот метод. Он принимает путь к ресурсу, который вы хотите загрузить, и целевой путь на удаленных серверах.

desc "Uploads CHANGELOG.txt to all remote servers."
task :upload_changelog do
  upload("#{RAILS_ROOT}/CHANGELOG.txt", "#{current_path}/public/CHANGELOG")
end

источник

1 голос
/ 24 мая 2014

Это загружает все файлы на соответствующие серверы.

cap deploy: загрузить FILES = abc, def

0 голосов
/ 16 ноября 2018

Любой, кто приходит сюда, у кого нет cap deploy:upload, может попробовать cap invoke извлечь файл вместо его нажатия. Например:

cap invoke COMMAND='scp host.where.file.is:/path/to/file/there /target/path/on/remote`
0 голосов
/ 26 апреля 2015

Показать все задачи:

cap -T
cap deploy                # Deploys your project.
cap deploy:check          # Test deployment dependencies.
cap deploy:cleanup        # Clean up old releases.
cap deploy:cold           # Deploys and starts a `cold'...
cap deploy:create_symlink # Updates the symlink to the ...
cap deploy:migrations     # Deploy and run pending migr...
cap deploy:pending        # Displays the commits since ...
cap deploy:pending:diff   # Displays the `diff' since y...
cap deploy:rollback       # Rolls back to a previous ve...
cap deploy:rollback:code  # Rolls back to the previousl...
cap deploy:setup          # Prepares one or more server...
cap deploy:symlink        # Deprecated API.
cap deploy:update         # Copies your project and upd...
cap deploy:update_code    # Copies your project to the ...
cap deploy:upload         # Copy files to the currently...
cap deploy:web:disable    # Present a maintenance page ...
cap deploy:web:enable     # Makes the application web-a...
cap integration           # Set the target stage to `in...
cap invoke                # Invoke a single command on ...
cap multistage:prepare    # Stub out the staging config...
cap production            # Set the target stage to `pr...
cap shell                 # Begin an interactive Capist...

Вы можете использовать:

cap deploy:upload

См: https://github.com/capistrano/capistrano/wiki/Capistrano-Tasks#deployupload

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...