Fabricアプリケーションケース


次に、ファイルのアップロードと検証、環境の導入、コードの公開機能に関する3つの比較的典型的なアプリケーションFabricの例を紹介します.
例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()