2012-07-22 12 views
5

में विभिन्न सेनाओं के लिए अलग अलग तर्क पासिंग मैं कई मेजबान पर एक लोड पीढ़ी प्रयोग आरंभ करने के लिए स्क्रिप्ट लिख रहा हूँ। मैं कई एसएसएच सत्र शुरू करने के लिए एक बैश स्क्रिप्ट लिख सकता था, लेकिन मैं कुछ और संरचित उपयोग करने की उम्मीद कर रहा था। के बाद से मैं अपने पटकथा के अधिकांश के लिए अजगर का उपयोग करें, मैंने सोचा था कि Fabric एक अच्छा विकल्प की तरह लग रही थी।कपड़ा

केवल समस्या यह है कि मैं एक आदेश (वास्तव में सिर्फ एक आईडी या काउंटर) के साथ मेजबान विशिष्ट डेटा की एक छोटी राशि में उत्तीर्ण होना है, और मैं उन्हें समानांतर में चलाने के लिए चाहते हैं।

दूसरे शब्दों में, मैं निम्नलिखित की तरह कुछ करना चाहता हूं, जहां प्रत्येक होस्ट के लिए host_num अलग है (संभवतः केवल वृद्धि हुई है)।

@parallel 
def launch(): 
    with cd('/working/dir'): 
     run("./start/script -id=%d", host_num) 

कपड़ा में यह संभव है? यदि नहीं, तो क्या एक और उपकरण है जो मैं एक ही चीज़ को पूरा करने के लिए उपयोग कर सकता हूं?

उत्तर

3

आप उपयोगकर्ता/मेजबान के खिलाफ जांच कर सकता है। प्रत्येक कार्य के माहौल के बारे में जानता वे वर्तमान में चलाएँ: और अधिक सुरुचिपूर्ण तरीके से लिखने के लिए स्वतंत्र महसूस

env.hosts = ['[email protected]', '[email protected]'] 

@task 
def test(): 
    print '%(user)[email protected]%(host)s' % (env) 

    if env.host == 'host1.com': 
     id = 1 
    elif ... 

    run('echo "%s"' % (id)) 

:)

+2

धन्यवाद (एक सुझाव शब्दकोशों जा रहा आईडी देखने के लिए बयान केस के समान प्रयुक्त)। यह बहुत बुरा है कि एक बेहतर तंत्र नहीं है - यदि आप मेजबान के विभिन्न सेटों पर एक ही स्क्रिप्ट चलाने के लिए चाहते हैं तो यह विधि बहुत अच्छी तरह से काम नहीं कर रही है। – bsowell

+0

क्या यह अभी भी समानांतर में चलता है? मेरे पास एक ही चुनौती है, लेकिन मेरे पास 20 मेजबान हैं, जो रन टाइम (एडब्ल्यूएस ईसी 2 इंस्टेंस) पर फैले हुए हैं। इसलिए, मुझे नहीं लगता कि समय से पहले 'if-then' कथन कड़ी मेहनत करेगा। –

2

आप क्या मेजबान आप कार्य अंदर चला रहे हैं के बारे में कुछ आत्मनिरीक्षण चाहते हैं, मैं env.host चर संदर्भित सुझाव देंगे। प्रत्येक कार्य जानता है के बारे में यह, env राज्य हालांकि समानांतर में वे इस राज्य का हिस्सा नहीं है, क्योंकि वे सब कांटे के रूप में चला रहे हैं। आपके निपटान में number of other env vars भी हैं।

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