2017-11-08 14 views
0

pythonスクリプトで同じホスト上でスレッド対応のパラレルな方法で実行可能なplaybookを実行する30のos.commandsを実行しようとしています。私が30の不可能なプレイブックを連続して実行すると、それは30のすべての仕事をしている。しかし、私がそれらを平行して実行しようとすると、いくつかのプレイブックはタスクを実行し、一部はタスクを実行しません。 Pythonはスレッドの実行を処理しています。私は、同じホスト上で複数の危険なプレイブックを同時に実行しようとすると、紛争が発生すると思います。どのようにすれば、同じホスト上で同時に30スレッドのプレイボームを実行できますか?同じホスト上で実行可能なplaybooksを実行する

def runOsCommand(systemCommand): 
    print(systemCommand) 
    logging.info(" "+systemCommand) 
    os.system(systemCommand) 

def createProfile(Profile,ProfileDesc): 
    Command= "ansible-playbook create-profile.yml --extra-vars \"VARIABLE1=" + str(Profile) + " " + "VARIABLE2=" + str(ProfileDesc) +"\"" 
    runOsCommand(Command) 
    return 

class Thread (threading.Thread): 
    def __init__(self, threadID, name, counter): 
     threading.Thread.__init__(self) 
     self.threadID = threadID 
     self.name = name 
     self.counter = counter 
    def run(self): 
     print "Starting " + self.name 
     createProfile(Profile,ProfileDesc)  
     print "Exiting " + self.name 

for iter in range(30): 
    mythreadx = Thread(iter, "Thread-Datapool-Row-"+str(iter), iter) 
    mythreadx.start() 
+1

"*いくつかのプレイブックは*いくつかのタスクを実行しないタスクを実行する" - あなたは、いくつかのトラブルシューティングを行う必要がありますコードの一部またはいくつかの設定でいくつかの問題を見つけることができます。私はあなたの問題であるかもしれないことについていくつかのアイデアを持っていますが、それが適用されるかどうか疑問があります。 – techraf

+0

私たちが呼び出しているymlプレイブックは、常に同じです。私たちは、同一のプレイブックを異なる議論と並行して30回呼びます。したがって、ymlコードは常に同じです。 – ivbtar

+0

すべてを説明したので、正解を得られない理由はありません。座って待ってみましょう。 – techraf

答えて

関連する問題