====== 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'' : 메소드에 데코레이터를 추가해 지정가능.