2010-04-27 24 views
6

मैं यहां एक नुकसान में हूं, और समाधान के लिए समुद्र (पढ़ना: इंटरनेट) को खराब करने के बाद मुझे स्टैक को मारने के अलावा किसी और के साथ नहीं छोड़ा गया है। किसी भी मदद की सराहना की।कैपिस्ट्रानो कई होस्ट तैनाती के लिए विफल रहता है

मेरे पास कैपिस्ट्रानो कई अलग-अलग वातावरणों पर तैनाती के लिए स्थानीय रूप से चल रहा है। (मैं विंडोज़ 7 पर हूं, fwiw)। जब तक मुझे एकाधिक परिनियोजन करने की आवश्यकता नहीं होती तब तक सभी ठीक थे: एक ही तैनाती के दौरान ऐप सर्वर।

आमतौर पर मुझे cap deploy पर कॉल करने पर एक बार मेरे एसएस पासफ्रेज़ के लिए संकेत दिया जाता है। मेरे पास एसएसएच-एजेंट चल रहा है (गिट कभी मेरे पास के लिए पेस्टर्स नहीं है) लेकिन इस कैपिस्ट्रानो ने हमेशा मुझे प्रत्येक तैनाती के बाद मुझे खराब कर दिया है। भले ही, एक मेजबान पर तैनाती करते समय यह हमेशा काम करता है।

अब, जब मैं एक बार में कई सर्वरों को तैनात करने का प्रयास है, यह मेरी पदबंध के लिए पूछता है क्या कई बार हो गया लगता है:

(आईपीएस ME द्वारा हटा दिया)

servers: ["redacted", "redacted"]<br /> 
Enter passphrase for ~/.ssh/id_rsa: Enter passphrase for ~/.ssh/id_rsa: 

तो ऊपर के साथ मैं अपना पासफ्रेज दर्ज करता हूं लेकिन यह काम नहीं करता है। यह थोड़ी देर इंतजार कर रहा है, फिर इस त्रुटि को थकाता है:

connection failed for: <one of the server ips> (NoMethodError: undefined method `overwrite' for nil:NilClass) 

और यह उसका अंत है।

  1. मैं सर्वर पर "पासवर्ड रहित" ssh कर सकता हूं जो मैं ठीक से तैनात कर रहा हूं।
  2. मुझे यकीन है कि एसएसएच एजेंट चल रहा है क्योंकि मैं हर बार
  3. कैप तैनाती में 'forward_agent' सेटिंग का उपयोग करके गिट w/आउट को अपने पासफ्रेज़ में प्रवेश कर सकता हूं।
  4. यह मेरी भूमिका है:
    role :app, "ip 1 removed", "ip 2 removed"
  5. तो मैं default_run_options[:max_hosts] = 1 निर्धारित करते हैं, यह ठीक काम करता है, लेकिन यह प्रत्येक मेजबान मैं करने के लिए की तैनाती कर रहा हूँ .. जो एक बहुत किया जा रहा समाप्त होता है करने के लिए हर एक कनेक्शन के लिए मेरी पदबंध के लिए पूछता है।

अनिवार्य रूप से मैं नीचे से किसी के लिए देख रहा हूँ (लेकिन सीमित नहीं): - "तुम कभी नहीं कि ठीक करने के लिए खिड़कियों पर जा रहे हैं" - "इस तरह आप Capistrano में असली passwordless तैनाती मिलता है " -" क्या आपने इस सेटिंग/फीचर को अनदेखा किया है? " - "मेरे पास एक चट्टान है जो कुछ भी ठीक कर सकता है, आप इसे उधार ले सकते हैं"

धन्यवाद!

उत्तर

0

उपयोगकर्ता चर सेट क्या है? Capfile के साथ निर्देशिका से एक सरल invoke कमांड चलाएं जो सूचीबद्ध प्रत्येक सर्वर पर निष्पादित करने का प्रयास करना चाहिए। क्या यह सफलतापूर्वक कनेक्ट होता है?

cap invoke COMMAND="echo 'Hello World'" 

यदि यह नहीं चलता है तो संभवतः आपका उपयोगकर्ता आपके एसएसएच पासवर्ड रहित एजेंट के समान नहीं है। आप सर्वर पर एसएसएच लॉग भी देख सकते हैं और देख सकते हैं कि क्या आप यह बता सकते हैं कि वास्तव में कौन सा एजेंट असफल रूप से कनेक्ट करने का प्रयास कर रहा है।

+0

मेरे पास कई चरण हैं इसलिए मैं कॉल करूंगा: कैप उत्पादन का आह्वान ... यह विफल रहता है क्योंकि यह प्रत्येक सर्वर के लिए पासफ्रेज को एक साथ बनाने के लिए कहता है (यानी: मुझे बार-बार बारफ़्रेज़ से पूछा जाता है, लेकिन मैं इसे 4 बार में दर्ज करने का मौका नहीं दिया गया)। व्यक्तिगत सर्वर के लिए यह चल रहा है ठीक काम करता है, पूर्व: टोपी prod1 invoke ... चूंकि मैं किसी भी व्यक्तिगत सर्वर पर सफलतापूर्वक आह्वान कर सकता हूं, इसलिए मैं इसे उपयोगकर्ता चर को सोचने में संकोच करता हूं। मुझे वीपीएन के माध्यम से कनेक्ट करना है, मुझे आश्चर्य है कि इसके साथ कुछ करने के लिए क्या है। – morris082

0

मैंने वास्तव में एक ही समस्या का अनुभव किया है और "डिफ़ॉल्ट_run_options [: max_hosts] = 1" की आपूर्ति करके और इसे मेरे पासफ्रेज़ को कैश करने के लिए ssh-agent का उपयोग करके इसे सही किया है (इसे वास्तव में पैच किया है)। सुनिश्चित करने के लिए एक आदर्श समाधान नहीं है, और मूल मुद्दा सतह के नीचे छिपा हुआ है।

+0

चल रही चर्चा यहां हो रही है: http://groups.google.com/group/capistrano/browse_thread/thread/d38dee230377b464 – jeyroz

+1

जब मैं इसे एक घुमाव देता हूं तो मुझे प्रत्येक आदेश के लिए निकाल दिया जाता है जो प्रत्येक कमांड के लिए निकाल दिया जाता है सर्वर (लगभग 30 कुल तक जोड़ता है)। मेरे पास एसएसएच एजेंट जा रहा है, लेकिन कैप अभी भी इसके लिए पूछता है। (एसएसएच एजेंट के साथ यह दो बार पूछता है) – morris082

0

क्या आपने एसएसएच पासवर्ड संग्रहीत करने के लिए पुटी-एजेंट का उपयोग करने की कोशिश की?

शायद प्रत्यक्ष प्रतिक्रिया नहीं है लेकिन आप msysgit इंस्टॉल कर सकते हैं और PATH में पूरी तरह से जोड़े जाने के लिए msysgit का चयन कर सकते हैं, प्रमाणीकरण के लिए पुटी-एजेंट का उपयोग करने के लिए भी चयन करें।

+0

इस पोस्ट को याद दिलाने के लिए धन्यवाद! मैंने हाल ही में सुना है कि विंडोज़ पर कैपिस्ट्रानो केवल पुट्टी-एजेंट का समर्थन करता है और इसे आजमाया लेकिन इसका कोई फायदा नहीं हुआ। मुझे इसके साथ थोड़ा और प्रयोग करने की ज़रूरत है और यहां अपडेट होगा। – morris082

+0

एसएसएच प्राधिकरण विन्यास के लिए बस msysgit के बारे में जानकारी जोड़ा गया – mpapis

0

मेरे पास लगभग समान समस्या थी (उबंटू 10.04 पर), सिवाय इसके कि त्रुटि connection failed for... त्रुटि प्राप्त करने के बजाय, यह बस वहां बैठेगी और जब तक मैं CTRL + C दबाता हूं तब तक कुछ भी नहीं करता।

समाधान ssh-add /path/to/my/private/key टाइप करके मैन्युअल रूप से मेरी एसएसएच कुंजी को मेरे कीरिंग में जोड़ना था। उसने मुझे मेरे पासफ्रेज के लिए कहा, जिसे मैंने दर्ज किया। तो मैं कभी भी अपना पासवर्ड दर्ज किए बिना cap production invoke COMMAND="hostname" और cap production deploy चला सकता था।

मेरे पास ssh_options[:forward_agent] = true सेट है।

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