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)]
}
参考