2011-07-06 12 views
1

マルチランでタスクを定義する方法を探しています。これは、コマンドラインで定義された一連のサーバー上で(ロールまたはホスト経由で)実行されます。ファブリックパラレルタスクが特定のセットにバインドされていません

env('app-nodes').multirun('some command') 

しかし、私は役割をハードコーディングする必要はありません:

私がこれまで見てきたすべての例のような何かをしてみてください。代わりにfab -R ...と定義したいと思います。私の選択肢は何ですか?

私はこれが動作することを期待したい:

@task 
def some_task(): 
    env().multirun('some command') 

が、それはあなたがprollyタスクの引数を使用し、TAVのENV(にそれを供給することをお勧めしますTypeError: '_AttributeDict' object is not callable

+0

Pythonの関数でなければならないのですか?GNU Parallelが修飾しますか? http://www.youtube.com/watch?v=OpaiGYxkSuQ –

+0

私はこれを既存のファブリックスクリプトセットに統合したいので、好ましくは並列化しません。 – viraptor

答えて

0

をスロー)その方法: http://docs.fabfile.org/en/1.1.1/usage/fab.html#per-task-arguments

また、ホストが動作するために空のセットが必要なのはなぜですか?

+0

perl:http://tav.espians.com/fabric-python-with-cleaner-api-and-parallel-deployment-support.html(#Contextualised Tasks)コンテキストはデフォルトのものにすぎません...残念ながら、それは@taskパラメータから設定されていません – viraptor

+0

ええ、彼のドキュメントから@taskまたはenv.ctxタプルのパラメータとして設定されています。だから、あなたはそれでctxの値を編集してenv()を使ったり、次のようにしたりすることができます:def t(use_hosts):env(use_hosts).run(..) – Morgan

関連する問題