====== Fabric ======
* [[http://docs.fabfile.org/|Fabric]] : SSH를 통해 멀티 서버 배포와 시스템 관리를 수행하는 명령행 툴. [[:python|Python]] 기반.
* [[https://github.com/ronnix/fabtools|fabtools]]
===== 명령행 인자 =====
* 즉석 다중 서버 명령 실행기
# fabfile.py가 없어도
fab -H 호스트목록,.. -- 실행할 명령
# fabfile.py가 있다면
fab -R 롤,.. -- 실행할 명령
===== import =====
# 아래 명령으로 Operations, ContextManagers, Decorators, Utils 가 모두 import 된다.
from fabric.api import *
===== host 지정 =====
env.hosts = ['hostname', 'username@hostname2:33']
===== Multiprocessing =====
* Python 2.6 버전 대의 경우 기본 라이브러리에 버그가 있으므로 2.6.3 이상을 사용할 것.
* 2.5 이하에서는 [[https://pypi.python.org/pypi/multiprocessing/|pypi multiprocessing]] 패키지를 설치해서 사용할 것
===== shell 변경 =====
* ''env.shell''의 기본값인 ''/bin/bash -l -c''를 다른 값으로 변경하면 다른 종류의 셸을 사용할 수 있고, ''-l'' 옵션을 빼서 로그인 셸이 아닌 일반 셸로 처리할 수도 있다.
* Ubuntu Server의 경우(현재 12.04) ''.bashrc''의 맨 앞에 있는 ''[ -z "$PS1" ] && return'' 코드 때문에 fabric에서 명령 실행시 ''.bashrc''의 환경변수가 설정이 안된다. ''.profile''에 환경변수를 설정할 것.
===== 현재 실행중인 태스크가 바라보는 host정보 =====
env.host # hostname만 있음
env.host_string # 설정에 지정한 username@host:port 형태의 문자열
이 값은 태스크 밖에서는 None이다.
===== Parallel 병렬실행 =====
* 여러 호스트에 대해 명령을 실행할 때 병렬로 실행하도록 할 수 있다.
* ''-P'' : 명령행 병렬실행 옵션
* ''@parallel'' : 메소드에 데코레이터를 추가해 지정가능.