内容简介:今天分享一个Python的自动化发布工具—Fabric。我在前面文章「我相信细心的读者发现了,但是这里其实还缺一个工具。
今天分享一个 Python 的自动化发布工具—Fabric。
我在前面文章「 Linux系列开坑记(一)-常用的3个命令 」说了tar,rsync,supervisor这三个,从打包上传备份上线,进程管理工具。
我相信细心的读者发现了,但是这里其实还缺一个工具。
那就是衔接这三个步骤的工具,它可以通过SSH,让我们在远端服务器执行 shell 命令更加方便,更加智能的与服务器进行交互。
除了与远端服务交互,也非常方便我们日常执行较为复杂,需要要定制化的Python函数。
安装
pip install Fabric # 安装 pip freeze > requirements.txt # 把安装包写入文件中
一个官网例子:
def hello(name='sitin'): print("Hello world %s!" % name) 复制代码
使用fab执行一下效果如下:
这里面我们需要知道fab是fabric安装的命令行工具,我们主要是通过它进行操作。
我个人平时用的比较多的命令有:
run 远端执行命令 local 本地执行命令 cd 远端切换目录 lcd 本地切换 @task 装饰器声明函数为fab task
简单的脚本我觉得是已经够用了,复杂一点需要更多操作了,详情见后文。
部署步骤
通常情况下,作为一个Python工程师我们发布代码需要做的事儿常见的有以下几点:
-
git pull 拉取最新代码,比如master分支(或者develop分支)
-
tar 打包最新代码
-
rsync增量同步到远端服务器,去掉一些不需要的本地目录
-
备份数据库或者备份代码
-
supervisor指定重启远端一个或多个服务,通过交互式指令判断
-
sentry查看日志正常与否
除了最后一步,这里面所有的操作我们都在fabfile.py就进行操作了,一般情况下fabfile.py放在项目根目录,当然你放在其他地方也没有什么问题。通过**-f**进行指定就行。
概要讲了,下面请参看我们的一个实战例子
一个例子
from fabric.api import ( with_settings, hosts, cd, # 远端 lcd, # 本地切换目录 run, # 执行 env, ) EST_ENV = '127.0.0.1'TEST_USER = 'test'env.forward_agent = True# 允许本地 SSH 代理连接远程终端时跳转@hosts(TEST_ENV) # 指定远程操作的机器地址@with_settings(user=TEST_USER) # 用来临时设定 env 变量,可以等同于 with settingsdef deploy_test(): # 发布测试环境 local('git pull --rebase upsgream dev') # local执行本地命令拉取代码到本地,这个可以用CI自动发布,就不用拉取到本地。 local('rsync -r . --exclude=tmp/ --exclude=backup/ sitin@yourip:/data/your_project') # 上传代码 with cd('/data/your_project'): # 表示所有操作在这个目录下面 run('docker-compose pull test') # test镜像名 backup_db() # 这里其实就是一个普通备份函数 run('docker-compose stop test') # 执行远端命令同local相反 run('docker-compose rm -f test') run('docker-compose run --rm test python manage.py migrate') # db同步 run('docker-compose up -d test') 复制代码
在终端执行命令
fab deploy_test # 就能进行发布了测试环境了 fab deploy_product # 如果有就能发布了
通常情况下测试,开发,服务器与线上操作不太一样,我们可以通过上面方式进行操作。除了上面的操作之后,如果我们测试线上完全一直或者多台服务器,可以通过指定不同角色来进行选择服务器的发布。
env.roledefs = { 'test': ['test@yourip'], # 指定多台机器 'dev': ['dev@yourip'], 'prod': ['opt@yourip2'], } def deploy(branch=master): pass 复制代码
fab -R test(上面定义的角色) deploy -ffabfile.py deploy这里还可以指定发布哪个分支的代码
这样指定某一个角色的服务器,某一个分支进行发布非常简单方便,对于经常使用的复杂命令操作我们还可以作为缩写命令来进行操作。
其他
类似我们要在 docker 里面进行docker-compose run --rm pythonmanage.py migrate这种较长操作。
把操作写到fabfile.py里面的函数,就类似 linux 下面alias一样,fab migrate就完了简单方便。
除了上面,我们可以指定发布版本颜色进行区分发布成功出错与否,进行警示我们,非常方便快捷。
更多的大家可以参看fab -h更多参数含义,今天这个 工具 就介绍到这儿.
另外有不清楚docker-compose这个命令的参考我前面的文章。关于Python服务器运维,除了Fabric 还有SaltStack,Ansible更为复杂强大的管理工具,后期我们再进行分享,感谢你的关注。
一个坚持原创的Python公号
相关文章:
扫码免费加入
以上所述就是小编给大家介绍的《Python自动化部署工具-Fabric》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Syncd - 自动化部署工具
- 前端自动化部署方案探索
- 使用 Capistrano 进行自动化部署
- jenkins自动化项目部署实战
- Syncd——开源自动化部署工具
- SaltStack自动化批量部署Apache
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Cracking the Coding Interview
Gayle Laakmann McDowell / CareerCup / 2015-7-1 / USD 39.95
Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I've coached and interviewed hund......一起来看看 《Cracking the Coding Interview》 这本书的介绍吧!