2012-05-29 3 views
5

Fabric으로 수십 개의 서버를 관리 할 때 각 서버에서 실행되는 명령의 특성에 대해 신경 쓰지 않고 각 호스트의 작은 정보를 대조하여 종료.Fabric이 여러 호스트에서 결과를 요약하는 방법이 있습니까?

Fabric은이 기능을 자체적으로 지원합니까? (문서를 검색해 보지 않았지만 아마도 뭔가를 놓쳤을 것입니다.)

그렇지 않으면 수동으로이 정보를 집계 한 다음 이탈 핸들러를 추가 할 수 있다고 생각합니다.하지만 일반적인 사용 사례 일 수있는 것처럼 느껴집니다.

예를 들어, 여러 서버에서 몇 가지 기본 보안 검사를 수행하는 스크립트가 있고 각 서버의 출력을 스크롤하는 대신 끝에 보고서를 작성하고 싶습니다. 패브릭의 출력을 제한하고 싶지 않습니다. 문제가있는 경우 다시 스크롤하여 정확하게 찾아 낼 수 있기 때문입니다.

답변

1

그냥 파이썬이에요. 그래서 당신이 원하는 것을 인쇄 할 수있을뿐만 아니라 자신의 데코레이터를 만들어 작업을 감싸서 내뱉을 수도 있습니다. 서 있기 때문에 핵심에는 아무것도 없으며 기여하지도 않습니다.

2

아마도 약간 날짜가 맞았습니다.이 질문을 한 이후로 Fabric은 확실히 진화했습니다 ... Morgan이 말했듯이 기본적으로 랩퍼 스크립트를 사용하여 작업량을 포함해야합니다. 그냥 파이썬 "이라고 부릅니다. 이 내용은 execution model 설명서에서 간단히 설명합니다.

@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은 데이터를 가져 와서 반환하는 모든 작업을 수행합니다.

관련 문제