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,輸入內容如下:
defhello():
print("
hello fab!
")
2. 執行命令fab hello,結果如下:
$ fab hellohello 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:
defhello(name):
'hello %s!
'%name
可以通過如下兩種方式進行引數傳遞:
$ fab hello:name=fabhello fab!
$ fab hello:fab
hello fab!
執行本地操作命令使用local
1. fabfile.py指令碼內容如下
from fabric.api importlocal
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 importcd,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 importenv,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...