2011-10-14 12 views
5

मैं फैब्रिक के साथ कुछ परिनियोजन कार्यों को चला रहा हूं जिन्हें मशीन पर Mercurial भंडार को चेकआउट/अपडेट करने की आवश्यकता है और फिर उचित प्रतिलिपि/कॉन्फ़िगरेशन निष्पादित करने की आवश्यकता है।मशीन में कपड़े के साथ ssh-add चलाएं

हर बार जब मैं एक नई मशीन को स्थापित करता हूं (हम वर्तमान में हमारे बुनियादी ढांचे के लिए ईसी 2 का उपयोग कर रहे हैं) या जब मैं मशीन में hg pull चलाता हूं तो यह मेरे एसएसएच कुंजी पासफ्रेज के लिए पूछेगा, जब हमें प्रारंभ करने की आवश्यकता होती है तो यह थोड़ा परेशान होता है एक समय में एक दर्जन मशीनें।

मैं कपड़ा में ssh-add को चलाने के लिए जब नए EC2 उदाहरण आरंभ नहीं हो जाता की कोशिश की है, लेकिन यह है कि ssh-agent की तरह लगता है कि खोल के लिए नहीं चल रहा है और मैं कपड़ा के उत्पादन में से एक Could not open a connection to your authentication agent. संदेश मिलता है।

फैब्रिक स्क्रिप्ट द्वारा उदाहरण से कनेक्ट होने पर मैं ssh-add काम कैसे करूं?

उत्तर

2

comment कपड़े के मुद्दे ट्रैकर पर यह मेरे लिए हल किया गया। यह lincolnloop solution का एक संशोधित संस्करण है। कपड़े की इच्छा के बजाय इस "रन" का उपयोग करके स्थानीय स्तर पर एसएसएच के माध्यम से अपने आदेश पाइप करें, जिससे आपके स्थानीय एसएस-एजेंट कुंजी प्रदान कर सकें।

from fabric.api import env, roles, local, output 
from fabric.operations import _shell_escape 

def run(command, shell=True, pty=True): 
    """ 
    Helper function. 
    Runs a command with SSH agent forwarding enabled. 

    Note:: Fabric (and paramiko) can't forward your SSH agent. 
    This helper uses your system's ssh to do so. 
    """ 
    real_command = command 
    if shell: 
     cwd = env.get('cwd', '') 
     if cwd: 
      cwd = 'cd %s && ' % _shell_escape(cwd) 
     real_command = '%s "%s"' % (env.shell, 
      _shell_escape(cwd + real_command)) 
    if output.debug: 
     print("[%s] run: %s" % (env.host_string, real_command)) 
    elif output.running: 
     print("[%s] run: %s" % (env.host_string, command)) 
    local("ssh -A %s '%s'" % (env.host_string, real_command)) 

कृपया ध्यान दें कि मैं फैब्रिक 1.3.2 चला रहा हूं, और इस फ़िक्स को अधिक समय की आवश्यकता नहीं होगी।

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