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

高洛峰
풀어 주다: 2017-01-16 17:43:16
원래의
1387명이 탐색했습니다.

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():
  &#39;&#39;&#39; nginx start &#39;&#39;&#39;
sudo(&#39;/etc/init.d/nginx start&#39;)
 
@task
def nginx_stop():
  &#39;&#39;&#39; nginx stop &#39;&#39;&#39;
  sudo(&#39;/etc/init.d/nginx stop&#39;)
로그인 후 복사

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿