Fabric是一個(gè)Python(2.5-2.7)庫(kù),用于簡(jiǎn)化使用SSH的應(yīng)用程序部署或系統(tǒng)管理任務(wù)。
它提供的操作包括:執(zhí)行本地或遠(yuǎn)程shell命令,上傳/下載文件,以及其他輔助功能,如提示用戶(hù)輸入、中止執(zhí)行等。
本文主要介紹CentOS6.3上使用fabric進(jìn)行自動(dòng)部署的基本方法。
1.環(huán)境部署
本節(jié)主要介紹python版本升級(jí),pip及fabric部署方法。
1.1.Python版本升級(jí)
CentOS6.3自帶的Python版本為2.6,首先需要升級(jí)到2.7版本。由于舊版本的Python已被深度依賴(lài),所以不能卸載原有的Python,只能全新安裝。
1.下載Pyhon,選擇下載Gzippedsourcetarball(2.7.6)(sig),網(wǎng)址:https://www.python.org/download/releases/2.7.6
2.解壓安裝,命令如下
tar-xvfPython-2.7.6.tgz
cdPython-2.7.6
./configure--prefix=/usr/local/python2.7
make
makeinstall
3.創(chuàng)建鏈接來(lái)使系統(tǒng)默認(rèn)python變?yōu)閜ython2.7
ln-fs/usr/local/python2.7/bin/python2.7/usr/bin/python
4.查看Python版本
python–V
5.修改yum配置(否則yum無(wú)法正常運(yùn)行)
vi/usr/bin/yum
將第一行的#!/usr/bin/python修改為系統(tǒng)原有的python版本地址#!/usr/bin/python2.6
至此CentOS6.3系統(tǒng)Python已成功升級(jí)至2.7.6版本。
1.2.安裝pip
Pip是一個(gè)安裝和管理python包的工具。
安裝方法如下:
1.下載pip,地址https://raw.github.com/pypa/pip/master/contrib/get-pip.py
2.執(zhí)行安裝命令
pythonget-pip.py
3.創(chuàng)建連接(否則會(huì)報(bào)錯(cuò)提示“命令不存在”)
ln-s/usr/local/python2.7/bin/pip/usr/bin/pip
1.3.安裝fabric
1.執(zhí)行安裝命令
pipinstallfabric
2.創(chuàng)建連接(否則會(huì)報(bào)錯(cuò)提示“命令不存在”)
ln-s/usr/local/python2.7/bin/fab/usr/bin/fab
2.腳本編寫(xiě)
本節(jié)對(duì)fabric用法進(jìn)行簡(jiǎn)單介紹,并提供實(shí)例以供參考。
2.1.Hello,fab
1.在當(dāng)前目錄下新建文件fabfile.py,輸入內(nèi)容如下
defhello():
print("Hellofab!")
2.執(zhí)行命令fabhello,結(jié)果如下
#fabhello
Hellofab!
3.文件名不為fabfile.py時(shí)需進(jìn)行指定
#mvfabfile.pytest.py
#fabhello
Fatalerror:Couldn'tfindanyfabfiles!
Rememberthat-fcanbeusedtospecifyfabfilepath,anduse-hforhelp.
#fab-ftest.pyhello
Hellofab!
4.參數(shù)傳遞
#vifabfile.py
defhello(name):
print'Hello%s!'%name
#fabhello:name=fab
Hellofab!
#fabhello:fab
Hellofab!
2.2.本地操作
執(zhí)行本地操作命令使用local
1.fabfile.py腳本內(nèi)容如下
fromfabric.apiimportlocal
deftest():
local('cd/home/')
local('ls-l|wc-l')
2.執(zhí)行命令fabtest,結(jié)果如下
#fabtest
[localhost]local:cd/home/
[localhost]local:ls-l|wc-l
2.3.遠(yuǎn)程操作
執(zhí)行遠(yuǎn)程操作命令使用run
1.fabfile.py腳本內(nèi)容如下
fromfabric.apiimportcd,run,env,hosts
env.hosts=['192.168.85.99:22','192.168.85.101:22']
env.password='test'
deftest():
withcd('/home'):
run("du-sh")
2.執(zhí)行命令fabtest,結(jié)果如下
#fabtest
[192.168.85.99:22]Executingtask'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]Executingtask'test'
[192.168.85.101:22]run:du-sh
[192.168.85.101:22]out:5.6G.
[192.168.85.101:22]out:
Disconnectingfrom192.168.85.99...done.
Disconnectingfrom192.168.85.101...done.
3.多服務(wù)器混合,需要在不同服務(wù)器進(jìn)行不同操作時(shí),可參考如下腳本
fromfabric.apiimportenv,roles,run,execute
env.roledefs={
'server1':['root@192.168.85.99:22',],
'server2':['root@192.168.85.100:22',]
}
env.password='test'
@roles('server1')
deftask1():
run('ls/home/-l|wc-l')
@roles('server2')
deftask2():
run('du-sh/home')
deftest():
execute(task1)
execute(task2)
結(jié)果如下
#fabtest
[root@192.168.85.99:22]Executingtask'task1'
[root@192.168.85.99:22]run:ls/home/-l|wc-l
[root@192.168.85.99:22]out:27
[root@192.168.85.99:22]out:
[root@192.168.85.100:22]Executingtask'task2'
[root@192.168.85.100:22]run:du-sh/home
[root@192.168.85.100:22]out:1.4G/home
[root@192.168.85.100:22]out:
Disconnectingfrom192.168.85.99...done.
Disconnectingfrom192.168.85.100...done.
以上內(nèi)容為大家介紹了Pythonfabric遠(yuǎn)程自動(dòng)部署簡(jiǎn)介,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/