Fabricアプリケーションケース
次に、ファイルのアップロードと検証、環境の導入、コードの公開機能に関する3つの比較的典型的なアプリケーションFabricの例を紹介します.
例1:ファイルのパッケージング、アップロード、検証
私たちはよくいくつかのファイルパッケージの配布の仕事をして、実施のステップは一般的に先に圧縮してパッケージして、大量にターゲットサーバーにアップロードして、最後に一致性の検査をして、この例はput()方法でファイルのアップロードを実現して、ローカルとリモートホストファイルのmd 5を比較することを通じて、最後にファイルの一致性の検査を実現します.
例1:ファイルのパッケージング、アップロード、検証
私たちはよくいくつかのファイルパッケージの配布の仕事をして、実施のステップは一般的に先に圧縮してパッケージして、大量にターゲットサーバーにアップロードして、最後に一致性の検査をして、この例はput()方法でファイルのアップロードを実現して、ローカルとリモートホストファイルのmd 5を比較することを通じて、最後にファイルの一致性の検査を実現します.
#!/usr/bin/env python
from fabric.api import *
from fabric.context_managers import *
from fabric.contrib.console import confirm
env.user = 'root'
env.hosts = ['192.168.1.23','192.168.1.24']
env.password = '123456'
@runs_once
def tar_task(): # ,
with lcd('/'):
local("tar zcvf auto.tar.gz auto")
def put_task():
run('mkdir /data') #
with cd("/data"):
with settings(warn_only=True):
result = put("/auto.tar.gz","/data") #put ,
if result.failed and not confirm("put file failed, Continue[Y/N]?"):
abort('Aboring file put task!') # ,
def check_task():
with settings(warn_only=True):
lmd5 = local("md5sum /auto.tar.gz",capture=True).split(' ')[0]
rmd5 = run("md5sum /data/auto.tar.gz").split(' ')[0]
if lmd5 == rmd5: # MD5
print "ok"
else:
print ERROR
def go():
tar_task()
put_task()
check_task()