Fabric 自動部署

2021-08-14 04:21:58 字數 1706 閱讀 4246

部署大多都是一些重複的工作,故在這裡記錄一下學習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 如果...