파이썬에서 Fabric 사용법 소개

1 - Fabric

파이썬 기반의 Fabric 라이브러리는 원격 서버와의 SSH 상호작용을 위한 다양한 인터페이스를 제공하며, 로컬 및 원격 머신에서 쉘 명령을 자동화하고 파이프라인화할 수 있습니다.

이 라이브러리는 애플리케이션 배포 및 시스템 관리 작업에 매우 적합하며, 기본적인 쉘 명령어를 이해하면 쉽게 사용할 수 있습니다.

2 - 버전 구분

PyPI에서 확인할 수 있는 주요 Fabric 라이브러리에는 "Fabric 2.1.3", "fabric2 2.1.3", "Fabric3 1.14.post1"가 있습니다.

  • Fabric: 공식 라이브러리로 Python 2 및 3을 지원하지만 Fabric 1.x의 fabfile과 호환되지 않습니다.
  • fabric2: Fabric과 동일한 기능을 제공하며, 1.x에서 2.x로의 부드러운 이전을 위해 패키지명을 분리했습니다(1.x는 Fabric 패키지, 2.x는 fabric2 패키지 설치).
  • Fabric3: Fabric 1.x 기반의 분기 버전으로 Python 2 및 3을 모두 지원하며 Fabric 1.x의 fabfile과 호환됩니다.

Fabric 1.x와 2.x 버전의 주요 차이점:- Fabric 1.x는 Python 2.5-2.7만 지원하며, Fabric 2.x는 Python 2.7 및 3.4+를 지원합니다.- Fabric 2.x는 1.x를 완전 재작성한 버전으로, 1.x의 fabfile과 호환되지 않으며 모듈 구조와 사용법에도 많은 변경이 있습니다.자세한 내용은: Rewrite for 2.0! See Upgrading from Fabric 1.x 참고

3 - Fabric3에 대한 정보

Fabric3는 SSH를 활용한 애플리케이션 배포 및 시스템 관리 작업을 간소화하기 위한 파이썬(2.7 또는 3.4+) 라이브러리 및 명령줄 도구입니다.이 라이브러리는 원래 Fabric의 Git 저장소를 기반으로 Python3 지원을 목표로 개발되었으며, 모든 최신 버전의 Python2와 호환됩니다. GitHub: https://pypi.org/project/Fabric3/**홈페이지**: https://github.com/mathiasertl/fabric/ 참고: 현재 버전 "Fabric3 1.14.post1"은 "Fabric 1.x"와 거의 동일한 기능과 사용법을 가집니다.Fabric3 설치 전에는 기존 Fabric 패키지를 제거해야 합니다.

 1 $ pip uninstall fabric
 2 $ pip install fabric3 --proxy="10.144.1.10:8080"
 3 
 4 $ pip show fabric3
 5 Name: Fabric3
 6 Version: 1.14.post1
 7 Summary: Fabric은 원격 실행 및 배포를 위한 단순한 파이선 도구입니다 (py2.7/py3.4+ 호환 분기).
 8 Home-page: https://github.com/mathiasertl/fabric/
 9 Author: Mathias Ertl
10 Author-email: mati@er.tl
11 License: UNKNOWN
12 Location: c:\python27\lib\site-packages
13 Requires: paramiko, six
14 Required-by:

4 - 문제 해결

1 - fabric.api 가져오기 시 "No module named api" 오류 발생``` 1 >>> from fabric.api import run 2 Traceback (most recent call last): 3 File "", line 1, in 4 ImportError: No module named api 5 >>>


해결 방법:

Fabric 버전 정보를 확인하세요. "from fabric.api import run" 구문은 Fabric 1.x 버전에서만 작동합니다.

**2 - 예제 실행 시 "hello'를 알 수 없습니다!" 오류 발생**

1 $ cat fabfile.py 2 # coding:utf-8 3 4 5 def hello(): 6 print("hello fabric!") 7 8 $ fab hello 9 No idea what 'hello' is! 10 11 $ fab --list 12 No tasks found in collection 'fabfile'!


해결 방법:Fabric 버전 정보를 확인하세요. Fabric 2.x 버전은 Fabric 1.x의 fabfile과 호환되지 않습니다. Fabric 2.x의 요구사항에 따라 fabfile 파일 내용을 수정한 후 다시 실행하세요.자세한 내용은: http://docs.fabfile.org/en/2.1/getting-started.html#addendum-the-fab-command-line-tool 참고```
 1 $ pip show fabric
 2 Name: fabric
 3 Version: 2.1.3
 4 Summary: 고수준 SSH 명령 실행
 5 Home-page: http://fabfile.org
 6 Author: Jeff Forcier
 7 Author-email: jeff@bitprophet.org
 8 License: BSD
 9 Location: c:\python27\lib\site-packages
10 Requires: paramiko, invoke, cryptography
11 Required-by:
12 
13 $ cat fabfile.py
14 from invoke import task
15 
16 @task
17 def hello(c):
18         c.run("echo 'hello fabric'")
19         print("hello fabric!")
20 
21 $
22 
23 $ fab --list
24 Available tasks:
25 
26   hello
27 
28 
29 $ fab hello
30 'hello fabric'
31 hello fabric!
32 
33 $

5 - 참고 자료

이 내용은 Fabric 1.x 및 Fabric3에 주로 적용됩니다.- 파이썬 원격 배포 도구 Fabric详解

태그: 파이썬 SSH 자동화 배포 파이선 라이브러리

6월 19일 16:16에 게시됨