部署大多都是一些重複的工作,故在這裡記錄一下學習fabric的過程,借鑑了網上的大神和文件,留作紀念。
sudo pip install fabric # sudo 取決於os
主要參考:官方文件
from fabric.api import local, lcd
deftest_local
():with lcd("./filename"):
local("ls")
# fab test_local
deftest_local_params
(name, value):
print(value, name)
# fab test_local_params:name=name, value=value
local() 可以執行linux命令 在這裡不多描述了。
from fabric.api import local, cd, run, env
env.hosts = ['hostname@ip:port', ]
env.password = 'pwd'
# 密碼自己處理,不建議儲存明文.
deftest_online
():with cd("/var/www/"):
run("ls -l")
# fab test_online
from fabric.api import *
env.hosts = ['hostname@ip:port', ]
env.password = 'pwd'
@runs_once
@task
deftarfile
():with lcd('/tmp/file'):
local('tar czf messages.tar.gz messages')
@task
defputfile
(): run('mkdir -p /tmp/file')
with cd('/tmp/file'):
with settings(warn_only=true):
result=put('/tmp/file/messages.tar.gz','/tmp/file')
if result.failed and
not confirm('put file filed,continue[y/n]?'):
abort('aborting file put task!')
@task
defcheckfile
():with settings(warn_only=true):
lmd5=local('md5sum /tmp/file/messages.tar.gz',capture=true).split(' ')[0]
rmd5=run('md5sum /tmp/file/messages.tar.gz').split(' ')[0]
if lmd5==rmd5:
print
'ok'
else:
print
'error'
# 合併操作
@task
defmain
(): tarfile()
putfile()
checkfile()
fabric 自動化部署
專案發布和運維的工作相當機械,頻率還蠻高,導致時間浪費在敲大量重複的命令上。修復bug什麼的,測試,提交版本庫 2分鐘 ssh到測試環境pull部署 2分鐘 rsync到線上機器a,b,c,d,e 1分鐘 分別ssh到abcde五颱機器,逐一重啟 8 10分鐘 13 15分鐘 其中鬱悶的是,每次操作...
有關自動化部署Fabric
要部署多台生產伺服器的時候,一台一台去配置不方便,所以我們需要自動化部署的方式來部署。本文採用的是fabric,在ubuntu 64 上實現。fabric python內建的模組,用來提高基於 ssh 的應用部署和系統管理效率。可以實現與遠端伺服器的自動化互動。一般使用情況為需要運維幾台至幾百台機器...
使用 Fabric 自動化部署
fabric 目前僅支援 python2,如果你的系統中只有 python3 版本,可以使用 fabric3,但是只能安裝低版本1.14.post1,高版本不支援api方法。接下就可以簡單地通過 pip 命令安裝 fabric 了。如果是 python 2 pip install fabric 如果...