Python fabric遠端自動部署簡介

2021-09-30 22:21:18 字數 3853 閱讀 8937

fabric是乙個python(2.5-2.7)庫,用於簡化使用ssh的應用程式部署或系統管理任務。

它提供的操作包括:執行本地或遠端shell

本文主要介紹centos 6.3上使用fabric進行自動部署的基本方法。

1.    環境部署

本節主要介紹python版本公升級,pip及fabric部署方法。

1.1.    python版本公升級

centos 6.3自帶的python版本為2.6,首先需要公升級到2.7版本。由於舊版本的python已被深度依賴,所以不能解除安裝原有的python,只能全新安裝。

2. 解壓安裝,命令如下

tar -xvf python-2.7.6.tgz

cd python-2.7.6

./configure --prefix=/usr/local/python2.7

make

make install

3. 建立鏈結來使系統預設python變為python2.7

ln -fs /usr/local/python2.7/bin/python2.7 /usr/bin/python

4. 檢視python版本

python –v

5. 修改yum配置(否則yum無法正常執行)

vi /usr/bin/yum

將第一行的#!/usr/bin/python修改為系統原有的python版本位址#!/usr/bin/python2.6

至此centos6.3系統python已成功公升級至2.7.6版本。

1.2.    安裝pip

pip是乙個安裝和管理python包的工具。

安裝方法如下:

2. 執行安裝命令

python get-pip.py

3. 建立連線(否則會報錯提示「命令不存在」)

ln -s /usr/local/python2.7/bin/pip /usr/bin/pip

1.3.    安裝fabric

1. 執行安裝命令

pip install fabric

2. 建立連線(否則會報錯提示「命令不存在」)

ln -s /usr/local/python2.7/bin/fab /usr/bin/fab

2.    指令碼編寫

本節對fabric用法進行簡單介紹,並提供例項以供參考。

2.1.    hello,fab

1. 在當前目錄下新建檔案fabfile.py,輸入內容如下

def hello():

print("hello fab!")

2. 執行命令fab hello,結果如下

# fab hello

hello fab!

3. 檔名不為fabfile.py時需進行指定

# mv fabfile.py test.py

# fab hello

fatal error: couldn't find any fabfiles!

remember that -f can be used to specify fabfile path, and use -h for help.

# fab -f test.py hello

hello fab!

4. 引數傳遞

#vi fabfile.py

def hello(name):

print 'hello %s!'%name

# fab hello:name=fab

hello fab!

# fab hello:fab

hello fab!

2.2.    本地操作

執行本地操作命令使用local

1. fabfile.py指令碼內容如下

from fabric.api import local

def test():

local('cd /home/')

local('ls -l|wc -l')

2. 執行命令fab test,結果如下

# fab test

[localhost] local: cd /home/

[localhost] local: ls -l|wc -l

2.3.    遠端操作

執行遠端操作命令使用run

1. fabfile.py指令碼內容如下

from fabric.api import cd,run,env,hosts

env.hosts=['192.168.85.99:22','192.168.85.101:22']

env.password='test'

def test():

with cd('/home'):

run("du -sh")

2. 執行命令fab test,結果如下

# fab test

[192.168.85.99:22] executing task 'test'

[192.168.85.99:22] run: du -sh

[192.168.85.99:22] out: 392g      .

[192.168.85.99:22] out:

[192.168.85.101:22] executing task 'test'

[192.168.85.101:22] run: du -sh

[192.168.85.101:22] out: 5.6g     .

[192.168.85.101:22] out:

disconnecting from 192.168.85.99... done.

disconnecting from 192.168.85.101... done.

3. 多伺服器混合,需要在不同伺服器進行不同操作時,可參考如下指令碼

from fabric.api import env,roles,run,execute

env.roledefs =

env.password = 'test'

@roles('server1')

def task1():

run('ls /home/ -l | wc -l')

@roles('server2')

def task2():

run('du -sh /home')

def test():

execute(task1)

execute(task2)

結果如下

# fab test

[[email protected]:22] executing task 'task1'

[[email protected]:22] run: ls /home/ -l | wc -l

[[email protected]:22] out: 27

[[email protected]:22] out:

[[email protected]:22] executing task 'task2'

[[email protected]:22] run: du -sh /home

[[email protected]:22] out: 1.4g   /home

[[email protected]:22] out:

disconnecting from 192.168.85.99... done.

disconnecting from 192.168.85.100... done.

Python Fabric遠端自動部署簡介

fabric是乙個python 2.5 2.7 庫,用於簡化使用ssh的應用程式部署或系統管理任務。本文主要介紹centos 6.3上使用fabric進行自動化部署的基本方法。本節主要介紹python版本公升級,pip及fabric安裝方法。centos 6.3自帶的python版本為2.6,首先需...

Python Fabric模組介紹

fabric官方文件 fabric最新的版本為2.4.0,主要依賴模組為invoke和paramiko,安裝方式pip install fabric。from fabric import connection c connection web1 result c.run uname s linux ...

遠端執行緒注入實現自刪除

核心函式 include include pragma comment lib,kernel32.lib pragma comment lib,user32.lib bool enabledebugpriv lpctstr szprivilege if lookupprivilegevalue nu...