代码自动化部署

代码自动化部署,第1张

利用fabric自动化发布代码

最近几天,在测试环境中开发和设计了python程序,但是制造的测试环境不同于测试环境。发布的程序涉及三个角色,节点、web和监视器,其中的环境变量必须根据工作环境进行更改。经过几次手动修改,觉得太麻烦,想用fabric开发脚本编写自动化技术。为什么会想到用面料?因为新手容易上手,文字文档也多!


剧本的想法大致如下:

1)根据svncheckout说明从本地服务器免费下载全新代码!

2)然后,里面的环境变量被人性化的替换,然后打包成tar.gz模式。

3)发给不同人物角色的服务器,缓解压力!

简单的脚本,让工作效率提高了很多!


脚本如下:

#! /usr/bin/env python # coding:utf-8 from fabric.api import * local_app_dir = "/usr/local/cimp_deloy" local_conf_dir = "/local/cimp_deloy/conf" remote_dir = "/usr/local" env.roledefs = {     'node_agent': ['root@xxxxxx','root@xxxxxxx'],     'cimp': ['root@xxxxxx',],     'node_monitor': ['root@xxxxxx',] } env.passwords = {     'root@xxxx': 'xxx',     'root@xxxxxx': 'xxxx',     'root@xxxxx': 'password',     'root@xxxxxx': 'password', } def svn_to_local():     """     把svn最新版文档download相匹配文件目录;     :return:     """     with lcd(local_app_dir):         local("rm -rf /usr/local/cimp_deloy/CIMP")         local("rm -rf /usr/local/cimp_deloy/*.tar.gz")         local("svn co svn://xxxxxx/CIMP") def pack_to_cimp():     """     打包给cimp_web服务器应用     :return:     """     with lcd(local_app_dir):         local("\cp -a /usr/local/cimp_deloy/conf/settings.py /usr/local/cimp_deloy/CIMP/cimp_web/cimp/.")         local("tar cvfz cimp_web.tar.gz CIMP/cimp_web")     print "pack_to_cimp 进行!" def pack_to_node_agent():     """     打包给node_agent服务器应用     :return:     """     with lcd(local_app_dir):         local("\cp -a /usr/local/cimp_deloy/conf/config.ini /usr/local/cimp_deloy/CIMP/node_agent/.")         local("tar cvfz node_agent.tar.gz CIMP/node_agent") def pack_to_monitor():     """      打包给node_monitor服务器应用     :return:     """     with lcd(local_app_dir):         local("\cp -a /usr/local/cimp_deloy/conf/conf.py /usr/local/cimp_deloy/CIMP/node_monitor/client/.")         local("tar cvfz node_monitor.tar.gz CIMP/node_monitor") def run_test():     run('uname -a') @roles('cimp') def deploy_cimp():     """     传输文件到远侧cimp服务器上     :return:     """     pack_to_cimp()     with lcd(local_app_dir), cd(remote_dir):         run("rm -rf cimp_web.tar.gz")         put("cimp_web.tar.gz",remote_dir)         run("tar zxvf cimp_web.tar.gz")     print "cimp code update finish" @roles('node_agent') def deploy_node_agent():     """     把升级程序发布到node_agent上     :return:     """     pack_to_node_agent()     with lcd(local_app_dir), cd(remote_dir):         run('pwd')         run("rm -rf node_agent.tar.gz")         put("node_agent.tar.gz",remote_dir)         run('pwd')         run("tar zxvf node_agent.tar.gz")     print "node_agent update finish" @roles('node_monitor') def deploy_node_monitor():     """     把升级包发布到node_monitor     :return:     """     pack_to_monitor()     with lcd(local_app_dir), cd(remote_dir):         run("rm -rf node_monitor.tar.gz")         put("node_monitor.tar.gz",remote_dir)         run("tar zxvf node_monitor.tar.gz")     print "node_monitor update finish"

记住,脚本的名字已经是fabfile.py,不可更改。运行命令应该是在fabfile的当前情况下实际 *** 作的,或者是一个具体的文档,名字是fab-f文件夹。


Fab-l用于在查询脚本中编写适用的指令。


1)将程序发布到node_agent角色的服务器,并应用指令。

fab-R节点代理部署节点代理


2)向node_monitor发出程序以应用指令:

fab-R节点_监视器部署_节点_监视器



脚本,大大提高工作效率!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/782424.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存