1 - Fabric
파이썬 기반의 Fabric 라이브러리는 원격 서버와의 SSH 상호작용을 위한 다양한 인터페이스를 제공하며, 로컬 및 원격 머신에서 쉘 명령을 자동화하고 파이프라인화할 수 있습니다.
이 라이브러리는 애플리케이션 배포 및 시스템 관리 작업에 매우 적합하며, 기본적인 쉘 명령어를 이해하면 쉽게 사용할 수 있습니다.
- HomePage: http://www.fabfile.org/
- Docs: http://docs.fabfile.org/
- GitHub: https://github.com/fabric/fabric/
- ChangeLog: http://www.fabfile.org/changelog.html
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详解