2011-06-14 14 views
5

के साथ सर्वरों के समूह में फ़ाइल की प्रतिलिपि बनाने के लिए मैं कैप का उपयोग सर्वरों के समूह पर कमांड चलाने के लिए बहुत कुछ करता हूं। मैं सर्वरों के समूह में एक फ़ाइल को धक्का देने के लिए कैपिस्ट्रानो का भी उपयोग करना चाहता हूं।कैपिस्ट्रानो

पहले मैंने सोचा कि PUT ऐसा करेगा, लेकिन आपको फ़ाइल के लिए डेटा बनाने देता है। मैं यह नहीं करना चाहता, मैं सिर्फ उस मशीन से एक मौजूदा फाइल कॉपी करना चाहता हूं जहां मैं अन्य मशीनों पर कैपिस्ट्रानो कॉमांड चला रहा हूं।

यह शांत हो सकता है अगर मैं कुछ इस तरह कर सकता है:

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

इस तरह की चीज बहुत उपयोगी लगती है इसलिए मुझे यकीन है कि ऐसा करने का एक तरीका होना चाहिए ...

उत्तर

10
upload(from, to, options={}, &block) 

अपलोड कार्रवाई फ़ाइल को सभी सर्व पर दिए गए पथ पर संग्रहीत करती है वर्तमान कार्य द्वारा लक्षित ers।

यदि आपने कभी भी तैनाती का उपयोग किया है: पहले कार्य अपलोड करें, तो आप पहले से ही यह जान सकते हैं कि यह विधि कैसे काम करती है। यह उस संसाधन का मार्ग लेता है जिसे आप अपलोड करना चाहते हैं और दूरस्थ सर्वर पर लक्ष्य पथ।

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

source

+7

एनबी। अगर आपको कोई त्रुटि मिलती है, तो कृपया कम से कम अपडेट करने के लिए एक फ़ाइल या निर्देशिका निर्दिष्ट करें, फिर 'top.upload (...)' को कॉल करें 'अपलोड न करें (...)' को असंबद्ध करने के लिए। रेफरी: http://www.mail-archive.com/[email protected]/msg04699.html –

+1

आप रेल 3 उपयोग कर रहे हैं, 'Rails.root' बजाय' RAILS_ROOT' का उपयोग करने के लिए याद है। – Mika

+4

'Rails.root' का उपयोग करना काम नहीं करेगा क्योंकि जब आप 'कैप' चलाते हैं तो रेल लोड नहीं होता है। इस उदाहरण में आप 'File.expand_path (' ../../ CHANGELOG.txt ', __FILE __) का उपयोग करना चाहते हैं। –

1

यह संबंधित सर्वर से सभी फाइलों को अपलोड करता है।

टोपी तैनाती: अपलोड फ़ाइलें = एबीसी, डीईएफ़

0

दिखाएँ सभी कार्य:

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

संबंधित मुद्दे