2011년 11월 13일 일요일

Fabric 설치 방법

 Python 프로그래밍 언어로 작성된 Fabric 의 설치 방법을 정리하였다. Fabric 은 ssh2 기반으로 Deploy 작업을 단순화+자동화 해줄 수 있는 모듈이다. 자세한 소개는 생략한다.


이 Post 에서는 Python 2.7.2 (UNIX) + Fabric 1.3.2 기준으로 설명된다.

  • Download 할 파일들
 Fabric 1.3.2 버젼 기준으로 필요한 모듈은 아래와 같다.


1) Python 인터프리터 프로그램
 http://www.python.org/download/ 위치에서 자신에게 필요한 버젼을 download 한다. 이 Post 에서는 Python-2.7.2.tar.bz2 를 다운로드 하였다.


2) setuptools - Python 모듈
 setuptools 는 Python 모듈을 쉽게 설치/제거 할 수 있는 admin utility 이다.  http://pypi.python.org/pypi/setuptools/0.6c11#downloads 에서 egg 파일을 다운로드 받는다.


3) SSH - Python 모듈
 SSH 모듈을 여기에서 다운로드 받는다.


4) PyCrypto - Python 모듈
 SSH 암호화 모듈을 여기에서 다운로드 받는다.


5) Fabric 1.3.2 - Python 모듈
 Fabric 모듈을 여기에서 다운로드 받는다.


※ Fabric 이 제공하는 Multiprocessing 기능을 이용하려면, 따로 multiprocessing 모듈을 추가 설치하거나, Python 을 2.6 버젼 이상을 갖고 있어야 한다.

  • Installation
SSH 모듈은 PyCrypto 가 설치되어 있어야 한다.(Dependency) 그러므로 3번과 4번은 순서를 지킨다.


1) Python 프로그램



#> bunzip2 Python-2.7.2.tar.bz2
#> tar -xvf  Python-2.7.2.tar
#> ./configure
#> make
#> make install


2) setuptools 0.6c11


#> sh setuptools-0.6c11-py2.7.egg


3) PyCrypto


#> gzip -d pycrypto-2.4.1.tar.gz
#> tar -xvf pycrypto-2.4.1.tar
#> python setup.py install


4) SSH 모듈


#> gzip -d ssh-1.7.9.tar.gz
#> tar -xvf ssh-1.7.9.tar
#> python setup.py install


5) Fabric


#> gzip -d fabric-1.3.2.tar.gz
#> tar -xvf fabric-1.3.2.tar
#> python setup.py install

  • Verification

 아래 내용을 참고하여 Fabric 이 잘 설치되었는지 확인한다.


1) 텍스트 에디터로 밑에 소스 코드를 입력하고 fabfile.py 로 저장한다.


def hello():
    print("Hello World!")


2) Shell 상에서 아래와 같이 입력하였을 때, print() 에 넣은 Hello World! 가 정상 출력되면 OK

  • 추가 Library dependency
설치 점검을 위해 Hello world 예제를 실행하면 정상적으로 동작하지만, 이러한 에러가 출력되었다.






/usr/local/lib/python2.7/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.


 libgmp 는 시스템에 설치되어 있는 라이브러리 인데, libgmp.so 파일의 버젼이 fab 가 요구하는 수준보다 낮아서 그런 것 같다. 그래서 libgmp 를 에러 로그에서 보았던 데로 5 이상 버젼을 설치한 후 Python 을 다시 compile 하여 재설치 하였다. 테스트하는 system 이 redhat 이 설치되어 있는데, 구성한지 오래되어 그럴 수도 있다.