Python Fabric遠端自動部署簡介

2022-03-27 20:52:06 字數 4006 閱讀 4025

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

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

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

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

2. 解壓安裝,命令如下

$ tar -xvf python-2.7.14.tgz

$ cd python-2.7.14$ ./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

至此centos 6.3系統python已成功公升級至最新2.7.14版本。

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

安裝方法如下:

2. 執行安裝命令

$ python get-pip.py

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

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

1. 執行安裝命令

$ pip install fabric

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

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

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

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

def

hello():

print("

hello fab!

")

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

$ fab hello

hello fab!

3. 檔名不為fabfile.py時需使用-f進行指定:

$ 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,修改fabfile.py:

def

hello(name):

print

'hello %s!

'%name

可以通過如下兩種方式進行引數傳遞:

$ fab hello:name=fab

hello fab!

$ fab hello:fab

hello fab!

執行本地操作命令使用local

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

from fabric.api import

local

deftest():

local(

'cd /home/')

local(

'ls -l|wc -l

')

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

$ fab test

[localhost] local: cd /home/[localhost] local: ls -l|wc -l

8

執行遠端操作命令使用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')

deftask1():

run(

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

@roles(

'server2')

deftask2():

run(

'du -sh /home')

deftest():

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.

1. 2.

Python fabric遠端自動部署簡介

fabric是乙個python 2.5 2.7 庫,用於簡化使用ssh的應用程式部署或系統管理任務。它提供的操作包括 執行本地或遠端shell 本文主要介紹centos 6.3上使用fabric進行自動部署的基本方法。1.環境部署 本節主要介紹python版本公升級,pip及fabric部署方法。1...

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...