백엔드 개발 파이썬 튜토리얼 운영 및 유지관리 관리자 Fabric 이용방법

운영 및 유지관리 관리자 Fabric 이용방법

Jan 16, 2017 pm 05:47 PM
fabric

Fabric 설치

Fabric은 pip, easy_install 또는 소스 코드 설치를 지원하므로 패키지 종속성 문제를 해결하는 데 매우 편리합니다. (사용자 환경에 따라 pip 또는 easy_install을 선택할 수 있습니다.)
pip install fabric
easy_install Fabric

소스코드 설치는 소개되지 않습니다.
설치 결과를 확인합니다. 모듈을 가져올 때 예외 메시지가 표시되지 않으면 설치에 성공한 것입니다.

root@Python_S6:~# python
Python 2.7.5+(기본값, 2013년 9월 19일) , 13: 48:49)
linux2의 [GCC 4.8.1]
자세한 내용을 보려면 "help", "copyright", "credits" 또는 "license"를 입력하세요.
>>> import fabric
>>>

공식 웹사이트에서는 간단한 시작 예시를 제공합니다:

root@Python_S6:/home/chart7/test/fabric# cat farbic.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from fabric.api import run
  
def host_type(): #定义一个任务函数,通过run方法实现远程执行'uname -s'命令
  run('uname -s')
로그인 후 복사

실행 결과는 아래 그림과 같습니다.

운영 및 유지관리 관리자 Fabric 이용방법

명령에서 참조하는 기본 파일 이름은 fabfile.py입니다. 기본 파일 이름이 아닌 경우 '-f'로 지정해야 합니다. as: fab -H 192.168.1.23,192.168.1.24 -f 호스트 유형 .py 호스트 유형, 관리 시스템과 대상 호스트가 키 인증 신뢰로 구성되지 않은 경우 해당 계정의 로그인 비밀번호를 입력하라는 메시지가 표시됩니다. 대상 호스트.

1. fab에서 자주 사용되는 매개변수

fab은 Fabric 프로그램의 명령 입구로서 다양한 매개변수 호출을 제공합니다.
fab [옵션] ] [: arg1,arg2=val2,host=foo,hosts='h1;h2',...]
다음은 일반적으로 사용되는 여러 매개변수 목록입니다. 더 많은 매개변수를 보려면 fab을 사용할 수 있습니다.
-l, 정의된 작업 기능 이름 표시
-f, fab 항목 파일 지정, 기본 항목 파일 이름은 fabfile.py입니다.
-g, 게이트웨이 장치 지정, 요새 호스트 환경과 같이 요새 호스트 IP를 입력하면 됩니다.
-H, 대상 호스트를 지정하고, 여러 호스트를 ','-P로 구분하고, 비동기 및 병렬 모드에서 여러 호스트 작업을 실행합니다. , 기본값은 직렬 작업입니다.
-R, 역할(role) 지정, 역할 이름을 사용하여 다양한 비즈니스 그룹의 장치 구분
-t, 장치 연결 시간 제한 설정,
-T 원격 호스트 명령 실행 시간 초과
-w, 명령 실행이 실패하면 기본적으로 작업을 종료하는 대신 경고를 발행합니다.

2. fabfile 작성

fab 명령은 다음에서 사용됩니다. 우리가 작성한 fabfile.py(다른 파일 이름은 -f filename을 추가하여 참조해야 함)와 결합하여 일부 명령줄 매개변수를 해당 방법으로 대체하여 "-H 192.168.1.23,192.168.1.24와 같이 보다 유연하게 만들 수 있습니다. ". "env.hosts=[192.168 .1.23,192.168.1.24]"와 같이 env.hosts를 정의하여 이를 달성할 수 있습니다. .fabfile의 본체는 여러 사용자 정의 작업 함수로 구성됩니다. 서로 다른 작업 함수는 서로 다른 작업 논리를 구현합니다. . 자세한 내용은 다음과 같습니다

3. 전역 속성 설정

env 개체의 역할은 fabfile의 전역 설정을 정의하는 것입니다. 대상 호스트, 사용자를 포함한 여러 속성을 지원합니다. , 비밀번호 역할에 대한 설명은 다음과 같습니다.

env.host,定义目标主机,可以用IP或主机名表示,以Python的列表形式定义,如env.hosts=['192.168.1.23,192.168.1.24'].
env.exculde_hosts,排除指定主机,如env.exclude_hosts=['192.168.1.23']
env.user,定义用户名,如env.user="root"
env.port,定义目标主机端口,如env.port = '22'
env.password,定义密码,如env.password='123456'
env.passwords,与password功能一样,区别在于不同主机不同密码的应用场景,需要注意的是,配置passwords时需要配置用户,主机,端口等信息,如:env.passwords = {'root@192.168.1.21:22':'123456',
'root@192.168.1.23:22':'3234234',
'root@192.168.1.24:23':'09887',
}
env.gateway,定义网关(中转,堡垒机)IP,如env.gateway = '192.168.1.1'
env.roledefs,定义角色分组,比如web组与db组主机区分开来,定义如下:
env.roledefs = {
'webservers':['192.168.1.21','192.168.1.22','192.168.1.23'],
'dbservers':['192.168.1.24','192.168.1.25'],
}
로그인 후 복사

참조 시 python 수정자를 사용하세요. 역할 수정자 아래의 작업 함수에는 해당 범위가 있습니다.

@roles('webservers')
def webtask():
  run('/etc/init.d/nginx start')
@roles('dbservers'):
def dbtask():
  run('/etc/init.d/mysql start')
@roles('webservers','dbservers')
def publictask():
  run('uptime')
def deploy():
  execute(webtask)
  execute(dbtask)
  execute(publictask)
로그인 후 복사

명령이 fab 배포를 실행하면 서로 다른 역할이 서로 다른 작업 기능을 실행할 수 있습니다.

일반적으로 사용되는 API

Fabric은 간단하지만 강력한 fabric.api 명령 세트 세트를 제공합니다. 이 API를 호출하면 대부분의 애플리케이션 시나리오 요구 사항을 완료할 수 있으며 설명은 다음과 같습니다. :

local,执行本地命令,如local:('uname -s');
lcd,切换本地目录,如lcd:('/home');
cd,切换远程目录,如cd:('/data/logs/');
run,执行远程命令,如:run('free -m')
sudo,sudo方式执行远程命令,如:sudo('/etc/init.d/httpd start');
put,上传本地文件到远程主机,如:put('/home/user.info','/data/user.info');
get,从远程主机下载文件到本地,如:get('/home/user.info','/data/user.info');
prompt,获得用户输入信息,如:prompt('please input user password:');
confirm,获得提示信息确认,如:confirm('Test failed,Continue[Y/N]');
reboot,重启远程主机,如reboot();
@task,函数修饰符,标识符的函数为fab可调用,非标记对fab不可见,纯业务逻辑;
@runs_once,函数修饰符,标识符的函数只会执行一次,不受多台主机影响;
로그인 후 복사

예제 1: 로컬 및 원격 호스트 정보 보기

이 예는 local() 메서드를 호출하여 로컬 명령을 실행하고 "@runs_once" 수정을 추가하여 작업 기능만 실행되도록 합니다. 한 번. run() 메소드를 호출하여 원격 명령을 실행합니다.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from fabric.api import *
env.user = 'root'
env.hosts = ['192.168.1.43','192.168.1.23','192.168.1.24']
env.port = '22'
env.password = '123456'
  
@runs_once #查看本地系统信息,当有多台主机时只运行一次
def local_task(): #本地任务函数
  local('uname -a')
  
def remote_task():
  with cd('/data'): #with的作用是让后面的表达式语句继承当前状态,实现cd /var && ls -l的效果
    run('ls -l')
로그인 후 복사

fab 명령을 통해 local_task 작업 함수를 호출하면 실행 효과는 아래 그림과 같습니다

운영 및 유지관리 관리자 Fabric 이용방법

결과는 [192.168.1.23] 'local_task' 작업을 실행하는 것으로 표시되지만 실제로는 호스트 192.168.1.23에서 작업이 실행되지 않지만 'uname -a'의 실행 효과는 로컬에 있습니다. Fabric 호스트가 반환됩니다

remtoe_task 작업 함수를 호출한 결과는 아래 그림과 같습니다

운영 및 유지관리 관리자 Fabric 이용방법

예제 2, 원격 디렉터리 목록을 동적으로 가져옵니다.

이 예에서는 "@task" 수정자를 사용하여 입력 함수 go()를 외부에서 사용할 수 있음을 표시하고 "@runs_once" 기호를 사용하여 사용자 입력을 기다린 다음 마지막으로 worktask() 작업 함수를 호출하여 원격 구현을 수행합니다.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from fabric.api import *
env.user = 'root'
env.hosts = ['192.168.1.23','192.168.1.24']
env.password = '123456'
@runs_once #在主机遍历过程中,只有一台出发此函数
def input_raw():
  return prompt("please input direcotry name:",default="/home")
  
  
def worktask(dirname):
  run("ls -l %s" %dirname)
  
@task
def go():
  getdirname = input_raw()
  worktask(getdirname)
로그인 후 복사

이 예에서는 한 번만 입력하면 해당 디렉터리의 목록 정보가 표시되므로 디렉터리 목록을 가져오는 기능에서 동적 입력 원격 디렉터리 이름을 구현합니다. 이 목적을 달성하기 위해 하위 함수 input_raw(동시에 구성됨) @runs_once 수정자가 호출됩니다. 실행 결과는 다음과 같습니다. 그림

운영 및 유지관리 관리자 Fabric 이용방법

파일 업로드 및 실행

아아아아

운영 및 유지관리 관리자인 Fabric의 사용방법과 관련된 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Linux 터미널에서 Python 버전을 볼 때 발생하는 권한 문제를 해결하는 방법은 무엇입니까? Apr 01, 2025 pm 05:09 PM

Linux 터미널에서 Python 버전을 보려고 할 때 Linux 터미널에서 Python 버전을 볼 때 권한 문제에 대한 솔루션 ... Python을 입력하십시오 ...

한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? 한 데이터 프레임의 전체 열을 Python의 다른 구조를 가진 다른 데이터 프레임에 효율적으로 복사하는 방법은 무엇입니까? Apr 01, 2025 pm 11:15 PM

Python의 Pandas 라이브러리를 사용할 때는 구조가 다른 두 데이터 프레임 사이에서 전체 열을 복사하는 방법이 일반적인 문제입니다. 두 개의 dats가 있다고 가정 해

10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? 10 시간 이내에 프로젝트 및 문제 중심 방법에서 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법? Apr 02, 2025 am 07:18 AM

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 Serving_forever ()없이 HTTP 요청을 어떻게 지속적으로 듣습니까? Apr 01, 2025 pm 10:51 PM

Uvicorn은 HTTP 요청을 어떻게 지속적으로 듣습니까? Uvicorn은 ASGI를 기반으로 한 가벼운 웹 서버입니다. 핵심 기능 중 하나는 HTTP 요청을 듣고 진행하는 것입니다 ...

문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? 문자열을 통해 객체를 동적으로 생성하고 방법을 파이썬으로 호출하는 방법은 무엇입니까? Apr 01, 2025 pm 11:18 PM

파이썬에서 문자열을 통해 객체를 동적으로 생성하고 메소드를 호출하는 방법은 무엇입니까? 특히 구성 또는 실행 해야하는 경우 일반적인 프로그래밍 요구 사항입니다.

중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? 중간 독서를 위해 Fiddler를 사용할 때 브라우저에서 감지되는 것을 피하는 방법은 무엇입니까? Apr 02, 2025 am 07:15 AM

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? 인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? Mar 21, 2025 pm 06:46 PM

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.

정규 표현이란 무엇입니까? 정규 표현이란 무엇입니까? Mar 20, 2025 pm 06:25 PM

정규 표현식은 프로그래밍의 패턴 일치 및 텍스트 조작을위한 강력한 도구이며 다양한 응용 프로그램에서 텍스트 처리의 효율성을 높입니다.

See all articles