git版本控制
import requests
from fabric.api import task, sudo, prompt
@task
def deploy (tag) :
"""
Deploy new code version and reload the webserver
Version: 1.0
"""
with cd('/repos/example' ):
sudo('git diff --stat HEAD..{}' .format(tag))
if not prompt('Does the code diff look good to you? [y/N]' ).lower() == 'y' :
print 'Abort'
return
sudo('git clean -xdf' )
sudo('git fetch --all' )
sudo('git checkout {}' .format(tag))
sudo('supervisorctl restart webserver' )
resp = requests.get('http://www.example.com/ping' )
print 'Web server health check: {}' .format('OK' if resp.status_code == 200 else 'FAILED' )
批量添加机器
from fabric.api import env
env.roledefs = {
'web' : ['web%d.example.com' % i for i in xrange(10 )],
'db' : ['db%d.example.com' % i for i in xrange(4 )]
}
参考