使用fabric进行自动化部署


fabric也使用好久了,这次静下心来好好整理一遍,当然这只是很简单的用法
参考文档

安装

凡事先从安装说起,fabric不支持python3,所以只能安装python2版本的fabric
由于我使用了virtualenv,所以先退出虚拟环境

1$ deactivate

安装全局fabric

1$ sudo pip2 install fabric

使用

使用之前先想想以前是怎么部署的,是不是这样:
先ssh到服务器,进行数据备份,然后退出(或者重新开一个终端),然后上传文件到服务器, 再ssh到服务器,安装所需要的模块,然后退出,ssh到root账户,重启,再退出···
是不是想想都烦
没关系,有了fabric后就不必这么麻烦了,需求:

备份数据

 1# fabfile.py
 2from fabric.api import run, env, cd, local, put, get
 3
 4def backup():
 5    env.user = 'root'
 6    dirname = 'backup_' + datetime.now().strftime('%Y%m%d')
 7    with cd('/root/backup/'):
 8        run('./backup-db.sh')
 9        run('tar zcvf %s.tar.gz %s/' % (dirname, dirname))
10    print '正在下载备份······'
11    get('/root/backup/%s.tar.gz' % dirname, 'backup/')

使用fab backup就可以一步备份

代码打包上传

 1def pack():
 2    '''这是我需要打包的文件'''
 3    local('pip freeze > requirements.txt')
 4    local('tar zcvf hohai.tar.gz manager.py requirements.txt app/ migrations/\
 5          --exclude="*.pyc" \
 6          --exclude="*.swp" \
 7          --exclude="**/__pycache__" \
 8          --exclude="**/.webassets-cache"')
 9
10def putcode():
11    env.user = '账户名称'
12    print '正在上传代码······'
13    put('hohai.tar.gz', '~/hhuc/')
14    local('rm hohai.tar.gz')
15    print '正在备份数据······'
16    run('cp -r ~/hhuc/app/ ~/backup/hhuc/')
17    with cd('~/hhuc/'):
18        run('rm -rf app/')
19        run('tar zxvf hohai.tar.gz')
20        run('rm hohai.tar.gz')

使用fab pack putcode一步打包上传

重启服务器

1def restart():
2    """重启服务器"""
3    env.user = 'root'
4    run('supervisorctl restart hhuc')

一键部署

 1def deploy():
 2    env.user = 'honmaple'
 3    print '正在上传代码······'
 4    put('hohai.tar.gz', '~/hhuc/')
 5    local('rm hohai.tar.gz')
 6    print '正在备份数据······'
 7    run('cp -r ~/hhuc/app/ ~/backup/hhuc/')
 8    with cd('~/hhuc/'):
 9        run('rm -rf app/')
10        run('tar zxvf hohai.tar.gz')
11        run('rm hohai.tar.gz')
12    restart()
13    print '部署成功······'

使用fab pack deploy就可部署
ok,就这样

作者: honmaple
链接: https://honmaple.me/articles/2016/03/使用fabric进行自动化部署.html
版权: CC BY-NC-SA 4.0 知识共享署名-非商业性使用-相同方式共享4.0国际许可协议
wechat
alipay

加载评论