Fabric-Python知名批量自動(dòng)化部署/測(cè)試模塊
#Fabric# Python知名開源自動(dòng)化部署模塊Fabric,強(qiáng)烈推薦給各位!(運(yùn)維,測(cè)試…均可以用它實(shí)現(xiàn)無比具有想象力的任務(wù))他主要用于對(duì)設(shè)備/服務(wù)器批量執(zhí)行任務(wù)(同時(shí)更換500臺(tái)服務(wù)器的密碼、同時(shí)更新或者重啟500臺(tái)虛擬機(jī))~安裝和使用也極其方便,沒有什么中間代碼,沒有架構(gòu),沒有內(nèi)幕!
或許對(duì)于批量自動(dòng)化部署而言,這是一個(gè)很大很大的福音。
我們來看一個(gè)VPSee提供的案例:
#!/usr/bin/python # -*- coding: utf-8 -*- from fabric.api import * import string from random import choice import socket import paramiko env.user = 'root' env.password = 'root' env.hosts = [ 'grid00', 'grid01', 'grid02', 'grid03', 'grid04', 'grid05'] @task @parallel def passwd(user, passwd=False): with settings(hide('running', 'stdout', 'stderr'), warn_only=True): if isup(env.host): if not passwd: passwd = genpass() sudo("echo -e '%s\n%s' | passwd %s" % (passwd, passwd, user)) def genpass(length=10): return ''.join(choice(string.ascii_letters + string.digits) for _ in range(length)) def isup(host): print 'connecting host: %s' % host timeout = socket.getdefaulttimeout() socket.setdefaulttimeout(1) up = True try: paramiko.Transport((host, 22)) except Exception, e: up = False print '%s down, %s' % (host, e) finally: socket.setdefaulttimeout(timeout) return up |
posted on 2014-01-10 09:36 順其自然EVO 閱讀(533) 評(píng)論(0) 編輯 收藏 所屬分類: selenium and watir webdrivers 自動(dòng)化測(cè)試學(xué)習(xí)