2013-11-22 9 views
21

लटक रहा है मैं उत्तरदायी का उपयोग कर रहा हूं और मुझे गिट मॉड्यूल काम करने में कठिनाई हो रही है। मैंने एक ही समस्या वाले लोगों की कई पोस्ट पढ़ी हैं, मैंने उत्तरदायी डॉक्टर को देखा, ठीक है मैंने लगभग हर चीज की कोशिश की। मुझे एक स्पष्ट ट्यूटोरियल मिला जो मैंने तब तक किया जब तक कि वे गिट का उपयोग नहीं करते लेकिन फिर मुझे एक समस्या है जब मैं अपने भंडार का उपयोग करता हूं ...:/ गिट कार्य बस लटकता है ... कोई त्रुटि नहीं, यह बस अटक गया है!उत्तरदायी: गिट मॉड्यूल

[web] 
dev1 ansible_ssh_host=10.0.0.101 ansible_ssh_user=root 

यह एक आवारा अपने कंप्यूटर पर वीएम VirtualBox पर चल रहा है:

यहाँ मेरी मेजबान फ़ाइल है।

मैं इस ट्यूटोरियल से प्लेबुक लिया और सभी चरणों किया जब तक कदम 08: https://github.com/leucos/ansible-tuto/tree/master/step-08

मैं अपने वी एम पर चला है, यह ठीक काम करता है, तो मैं एक काम "मेरे कोड नियोजित" मेरे भंडार का उपयोग करने के लिए जोड़ ... लेकिन यह काम काम नहीं करता है। यह बिटबकेट पर एक निजी भंडार है। क्या इससे कोई फर्क पड़ता है?

- hosts: web 
    tasks: 

    - name: Deploy our awesome application 
     action: git repo=https://github.com/leucos/ansible-tuto-demosite.git dest=/var/www/awesome-app 
     tags: deploy 

    - name: Deploy my code 
     action: git repo=https://[email protected]/YAmikep/djangotutorial.git dest=/var/www/my-app 
     tags: deploy 

उपयोगकर्ता के साथ कुछ भी नहीं हो सकता है, या उपयोगकर्ता ansible आदि चल रहा है, या चाबियाँ,, लेकिन मैं घंटों के लिए आगे और पीछे की कोशिश की और मैं और भी अधिक अब उलझन में हूँ ... मैं बस नहीं जानता अब इसे डीबग करने के लिए क्या करना है और यह पता लगाना कि क्या गलत है और मैं क्या खो रहा हूं।

धन्यवाद।

+1

मैं व्यक्तिगत रूप से गिट रिपोज तक पहुंचने के लिए HTTPS का उपयोग करने की अनुशंसा नहीं करता, जब तक कि आप बहुत सख्त फ़ायरवॉल (बिना 22 आउटबाउंड, हाँ) के पीछे हैं। यह बड़ी कमियों को दबाते समय समस्याएं पैदा कर सकता है, यह HTTP प्रॉक्सी सेटिंग्स पर बुरी तरह निर्भर हो सकता है, और निश्चित रूप से यह आपके रेपो के अलावा क्लींटक्स्ट में अपना पासवर्ड संग्रहीत करता है। एसएसएच निजी कुंजी, जो कि दूरस्थ मेजबानों के लिए एजेंट-अग्रेषित हैं, केवल पर्याप्त समय के लिए पर्याप्त हैं। – spacediver

+4

एक सामान्य नोट के रूप में। सिंटैक्स 'https: // github.com/account/repo-name.git' ** एक उत्तरदायी कार्य में तैनाती कुंजी के साथ ** काम नहीं करेगा। हालांकि, वाक्यविन्यास '[email protected]: खाता/repo-name.git' ** वैध तैनाती कुंजी के साथ एक उत्तर कार्य में ** कार्य करेगा। वाक्यविन्यास सूक्ष्म लेकिन ध्यान देने योग्य है। – avelis

+1

@avelis आपकी टिप्पणी ने आज मेरी मदद की। यूआरएल को 'https' से' git' – sankargorthi

उत्तर

7

यदि उपयोगकर्ता को पासवर्ड की आवश्यकता है, तो गिट मॉड्यूल लटका सकता है अगर कोई प्रदान नहीं किया जाता है जबकि गिट निष्पादन योग्य पृष्ठभूमि में इसके लिए संकेत देता है। अपने रेपो पैरामीटर के लिए, https://YAmikep:{yourpassword}@bitbucket.org/YAmikep/djangotutorial.git का उपयोग करने का प्रयास करें। या, इसके बजाय गिट/एसएसएच कुंजी का उपयोग करने का प्रयास करें ताकि कोई पासवर्ड आवश्यक न हो।

+1

में बदल दिया है, मैं एसएसएच कुंजी और एसएसएच एजेंट का उपयोग कर रहा हूं लेकिन मैं इस ट्यूटोरियल का पालन करने की कोशिश कर रहा हूं: http://www.stavros.io/posts/example-provisioning-and-deployment- उत्तरदायी/एएनबी यह विशिष्ट निर्मित उपयोगकर्ता के साथ काम नहीं करता है ... मैं गिट काम कर सकता हूं लेकिन परियोजना के लिए बनाए गए उपयोगकर्ता के साथ नहीं। – Michael

+0

@YAmikep - क्या आपने '[email protected] के रेपो पते के साथ प्रयास किया है: YAmikep/djangotutorial.git'? आपके द्वारा ऊपर दिया गया उदाहरण HTTPS प्रोटोकॉल का उपयोग कर रहा है, जिससे बिटबकेट को कुंजी का उपयोग करने के बजाय प्रमाणीकृत करने के लिए पासवर्ड के लिए संकेत मिलेगा। गीथूब एक ठीक काम करता है क्योंकि यह एक सार्वजनिक रेपो है, लेकिन बिटबकेट को यमिकप के लिए प्रमाण पत्र की आवश्यकता है। – mragh

+0

यह मुझे प्रमाणीकरण विफल देता है, हालांकि उपयोगकर्ता नाम और पासवर्ड सही हैं, कोई विचार क्यों? –

3

मुझे इसका सामना करना पड़ा है, और मेरे मामले में गिट एक होस्ट (bitbucket.org) के लिए नई एसएसएच कुंजी की पुष्टि करने पर लटका हुआ है। इसे sshknownhosts मॉड्यूल द्वारा हल किया जा सकता है, जो मेजबान पर .ssh/known_hosts को पॉप्युलेट करने के लिए गिट से पहले चलाया जाता है, ताकि बाद में गिट को उस पर लटकने की आवश्यकता न हो।

लेकिन संभावित सुरक्षा समस्याओं के बारे में सावधान रहें, मॉड्यूल दस्तावेज़ पढ़ें।

+1

इसने मेरे लिए फांसी गिट समस्या हल की। 'Sshknownhosts' मेरे लिए काम नहीं किया, लेकिन यह एक किया था: https://github.com/brycebaril/ansible-known_hosts – mahemoff

+0

अच्छा! जवाब स्वीकार करने के लिए स्वतंत्र महसूस करें;) यूपीडी। ठीक है, आप टीएस% नहीं हैं) – spacediver

+1

अगर मैं कर सकता तो मैं करूँगा! – mahemoff

3

fwiw मैंने यह स्पष्ट रूप से कई एसएसएच एजेंटों (ओएसएक्स क्लाइंट) के चलते भी किया है।

killall ssh-एजेंट द्वारा फिक्स्ड & & eval `ssh-agent` & & ssh-जोड़ने कश्मीर

11

वजहों Git मॉड्यूल फांसी हो सकती है के एक जोड़े हैं, लेकिन सबसे संभव यह है कि git clone कमांड एक पुष्टि के लिए प्रतीक्षा कर रहा है यदि होस्ट कुंजी को आपके सर्वर के ज्ञात होस्ट में जोड़ा जाना चाहिए। यह सत्यापित करने के लिए कि क्या यह समस्या ध्वज के साथ उत्तरदायी निष्पादित है: --verbose, ताकि यह वर्बोज़ मोड में चलती है, इससे आपको त्रुटि के बारे में अधिक जानकारी मिल जाएगी।

समाधान 1:

git मॉड्यूल के साथ accept_hostkey पैरामीटर का उपयोग इस समस्या से बचने के लिए

यदि आप पुष्टि करते हैं कि ज्ञात होस्ट समस्या है, तो आप दो विकल्प हैं।

- name: ensure jquery repo is available 
    git: [email protected]:jquery/jquery.git version=master accept_hostkey=True 

समाधान 2:

कोर git मॉड्यूल उपयोग करने से पहले ansible-sshknownhosts तीसरे पक्ष के मॉड्यूल का उपयोग करें:

- name: ensure github is a known host 
    action: sshknownhosts host=github.com state=present 

- name: ensure jquery repo is available 
    git: [email protected]:jquery/jquery.git version=master accept_hostkey=True 

knownhosts के बाद से एक कोर ansible मॉड्यूल नहीं है, आपको पहले इसे इंस्टॉल करने की आवश्यकता होगी, कृपया अधिक के लिए github repo docs देखें सूचना सम्मान कैसे स्थापित करें।


एक और समाधान ssh कुंजी की जाँच की मेजबानी निष्क्रिय करने के लिए होगा, लेकिन इतना जब तक आप वास्तव में पता है कि तुम बेहतर है कि इस से बचने के लिए क्या कर रहे हैं इस, सुरक्षा प्रभाव पड़ता है।

+0

'कार्रवाई करनी चाहिए/चाहिए: sshknownhosts' को' sshknowhosts के रूप में लिखा जाना चाहिए: होस्ट = ... '? – chicks

+0

'accept_hostkey' ध्वज मेरे लिए काम नहीं करेगा। मैंने '-o StrictHostKeyChecking = no' को' ssh_opts' में जोड़ा और यह काम किया। – chishaku

10

मैंने मूल रूप से सब कुछ करने की कोशिश की (कुंजी को स्वीकार करना, एसएसएच कॉन्फ़िगरेशन चेंज, ज्ञात_होस्ट्स फ़ाइल, एसएसएच-एजेंट अग्रेषण, और और क्या भूल गया) कोई सफलता नहीं।

मेरे सभी बालों को खींचने के बाद, मैंने अंततः समस्या को कम कर दिया कि एसएसएच निजी कुंजी को पासफ्रेज़ की आवश्यकता हो सकती है!

मैंने पहले यह नहीं देखा था क्योंकि स्थानीय एसएस एजेंट ने कीरिंग संग्रहीत पासफ्रेज़ का उपयोग करके इसका ख्याल रखा था ताकि सबकुछ स्थानीय रूप से काम कर सके। एक वाग्रेंट वर्चुअल मशीन पर उत्तरदायी का उपयोग करके, यह तंत्र उपलब्ध नहीं था और गिट मॉड्यूल पासफ्रेज दर्ज करने के लिए इंतजार कर रहा था। एक बार संभावित कारण को महसूस करने के बाद, मैंने पासफ्रेज़ के बिना एक विशेष कीपैयर बनाया (सुरक्षा पहलुओं को जाना जाता है, है ना?) और बिटबकेट (/ गीथब/जो भी) में सार्वजनिक कुंजी जोड़ दी। इस विशेष कुंजी का उपयोग करते समय - चीजें आसानी से चली गईं।

+0

यह एक lifesaver है! – physicalattraction

+0

बिल्कुल यही^^ (इसने मुझे बहुत समय बचाया) – Benz

+0

आप एक psswordless कुंजी कैसे बनाते हैं? मैंने एक रिक्त पासवर्ड का उपयोग करने की कोशिश की, लेकिन यह अभी भी लटकता है (शायद किसी को एंटर दबाए रखने के लिए इंतजार कर रहा है) –

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