>백엔드 개발 >파이썬 튜토리얼 >Python 자동 배포 도구 Fabric을 시작하기 위한 간단한 가이드

Python 자동 배포 도구 Fabric을 시작하기 위한 간단한 가이드

高洛峰
高洛峰원래의
2017-01-16 17:43:161427검색

Fabric은 SSH 프로토콜을 기반으로 하는 Python 도구입니다. 기존 ssh/scp 방법에 비해 Python 구문으로 관리 명령을 작성하는 것이 더 읽기 쉽고 확장하기 쉽습니다.

공식 홈페이지 주소 : http://fabfile.org

설치
python 및 pip 관리 도구 설치 과정 생략

pip install fabric

설치 성공 여부 확인
Python 입력 편집 모드에서 코드를 입력하면 오류가 없으면

from fabric.api import local

fabric 버전 hello world
fabric 기본 파일 fabfile.py가 성공적으로 설치되었음을 의미합니다. 이 이름을 사용하고 싶지 않으면 -f 매개변수를 추가해야 합니다.

fabfile.py 파일 만들기

vim fabrile.py

코드 편집

#coding:utf-8
from fabric.api import local#
def hello():
   # local函数用来执行本地命令
   local('echo "hello wolrd!"')

코드 실행

fab hello

fab -l을 통해 실행 가능한 작업을 볼 수 있습니다. 현재 hello 함수
가 실행 중입니다. 결과

[localhost] local: echo "hello world!"
hello world!
Done.

기존 유지 관리 방법:

$ ssh x.x.x.x 'uname -a' -- 输出略

Fabric 예:

$ cat fabfile.py
from fabric.api import run
def uname():
  run('uname -a')
$ fab -H x.x.x.x uname -- 输出略

직관적으로 보면 ssh 방식에 비해 코드를 많이 작성해야 할 것 같지만, ssh 방식을 기반으로 하면 중간에 할 수 있는 컨트롤 링크가 상대적으로 적습니다. 서비스가 시작되었는지 여부, 시작되지 않은 경우 시작 및 기타 작업을 수행합니다. SSH 명령형 접근 방식은 좀 더 까다롭습니다. (물론, 작동중인 머신에서 스크립트를 작성하고 ssh를 통해 호출할 수도 있습니다)

Fabric의 몇 가지 장점에 대해 이야기해 보겠습니다.

역할 정의

쉬운 코드 읽기

로컬 및 원격 작업을 캡슐화합니다(여전히 시스템/popen/ssh 작업을 직접 캡슐화해야 합니까?)

유연한 매개변수(호스트/역할 등을 동적으로 지정하고 멀티프로세싱 기반 동시 실행)

전체 로그 출력

위에 나열된 것처럼 실제로 일상 작업에는 기본적으로 유사한 캡슐화가 있지만 기성화된 성숙한 도구가 있으므로 사용하지 않으시겠습니까? 그것? 오른쪽.

일반적으로 사용되는 구성:

env.host — 물론 호스트 IP는 -H 매개변수를 지정할 수도 있습니다.

env.password — 비밀번호인 경우 무시하세요. 좋은 채널이 있습니다

env.roledefs - 역할 그룹화(예: {'web': ['x', 'y'], 'db': ['z']}

fab -l -- 사용 가능한 작업 표시(명령)

fab -H -- 호스트 지정, 쉼표로 구분된 여러 호스트 지원

fab -R -- 역할 지정, 여러 호스트 지원

fab -P                                                                                                  > > >

local('pwd')       — 로컬 명령

lcd('/tmp') - 로컬 디렉터리 전환

cd('/tmp') - 원격 디렉터리 전환

run('uname -a ') - 원격 명령 실행

Sudo ('/ETC/Init.d/Nginx Start ') -원격 SUDO 종료, PTY 옵션 주의

예 4: 여러 대상 서버

동일한 비밀번호 또는 수동 입력:

$ cat fabfile.py

비밀번호가 다르거나 수동으로 입력하고 싶지 않은 경우(이 방법은 서버 그룹 역할을 하지 않음):

from fabric.api import *
@task
def nginx_start():
  ''' nginx start '''
sudo('/etc/init.d/nginx start')
 
@task
def nginx_stop():
  ''' nginx stop '''
  sudo('/etc/init.d/nginx stop')

Python 자동 배포 도구인 Fabric의 간단한 시작 가이드에 대한 자세한 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.