5

Fabricを使用して数十台のサーバーを管理している場合、各サーバーで実行されているコマンドの詳細を気にしないことがよくあります。代わりに、各ホストからの小さな情報を照合して、最後に要約して示します。

Fabricはこの機能自体をサポートしていますか?(私は無駄にドキュメントを検索しましたが、おそらく何かを逃しました)。

それ以外の場合は、この情報を手動で集約してから終了ハンドラーを追加できると思いますが、これは一般的なユースケースのように感じます。

例として、いくつかのサーバーで基本的なセキュリティチェックを行うスクリプトがいくつかあり、各サーバーの出力をスクロールするのではなく、最後にレポートを作成したいと思います。問題がある場合はスクロールして戻って特定するため、Fabricの出力を制限したくありません。

4

2 に答える 2

3

これはおそらく少し古いものであり、この質問をしてから、Fabricは確かに大きく進化しました...しかし、Morganが述べたように、基本的には主力製品を含むラッパースクリプトが必要であり、それはそこの。これは、実行モデルのドキュメントで簡単に説明されています。

たとえば、「稼働時間」のようなものをラップすることを考える1つの方法です(ただし、明らかに、これははるかに複雑になる可能性があります)。

@parallel
def _get_uptime():
  '''Retrieve and return uptime for each host'''
  with hide('stdout'):
    up = run( 'uptime' )
  return( up.rstrip() )

@runs_once
def uptime_sorted():
  '''System: System uptime (sorted) - Use parallel for best effect'''
  print( cyan( "[%(host)s] Executing on %(host)s as %(user)s" % env ) )
  system_uptimes = execute( _get_uptime )
  for sys,up in sorted( system_uptimes.iteritems() ):
    print "%s: %s" % ( sys, up )

これにより、uptime_sortedがエントリタスクになります。および_get_uptimeは、データを取得して返すすべての作業を実行します。

于 2015-03-17T22:51:27.317 に答える
2

これは単なるPythonなので、好きなものを印刷したり、独自のデコレータを作成してタスクをラップしたり、吐き出したりすることができます。現状では、コアにも貢献者にもそれを行うものはありません。

于 2012-05-29T22:09:44.453 に答える