1

ファブリック スクリプトにいくつかのタスクがあります。env.hosts または @hosts デコレーターの設定を特定のタスクに分離する方法を理解しようとしています。ホストのタプルとして解析できるファイルを他の人にフィードできる一方で、fab ファイルにいくつかのタスクを設定してホストをプリセットしたいと考えています。また、そのファイルを実行時に決定したいと思います。

私はこれを持っています:

def host_list():
    host_file = raw_input("enter the file containing the list of hosts: ")
    host_list = open(host_file, 'r')
    host_list = host_list.read().strip('\n')
    host_list = host_list.split(',')

    return host_list

私には仕事があります:

@task
def hostname():
    run('hostname')

host_list 関数をコマンドに分割すると、env.hosts を適切に設定できますが、env.hosts を設定するためのファブリック プロンプトを表示させたくない他のタスクがあります。タスク関数内にステップを追加しようとしましたが、繰り返しごとにプロンプ​​トが表示されます。#hosts デコレーターに host_list 関数を入力しようとしましたが、関数オブジェクトが反復可能ではないというエラーが発生しました。host_list 関数を特定のタスクのみに分離する方法はありますか?

4

1 に答える 1

0

この回答では、スタック オーバーフローに多くの質問があります。しかし、アイデアを得るために、ファイルを引数として host_list() に送信し、それを読み取り、その結果をexecute()で使用するために渡すことができます

于 2014-01-14T04:07:29.223 に答える