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