欢迎光临 www.huangdc.com

运维自动化发布系统

Python huangdc 8949℃ 0评论

大家好哈,最近在学习用 python 做一个server发布系统。游戏的版本发布是运维日常工作中的主要部门,而且这工作频繁、重复、重复的进行着,运维必须采用一些自动化运维手段来处理版本更新发布;实现自动化运维很有必要的手段,下面根据公司业务需求,自定义开发了一款运维自动化发布系统

一、背景:

公司游戏业务应用需要频繁更新到线上服务器,开发人员打包好的bin文件存在SVN服务器上,运维需要将开发人员提交到svn 的执行文件及配置文件同步到线上(由于频繁、重复的更新,会给运维工作带来繁琐的工作量)

应用更新包括:

a、应用文件的更新替换

b、应用进程的启停

二、需求:

1、开发人员提交svn 代码后,可以通过web界面选择svn的文件,然后直接提交到线上服务器

2、可以通过web界面对相应进程进行启停操作;

3、可以查看相应的操作log

三、实现:

(1)、自动化发布系统开发工具:

1、python   (https://www.python.org/)

2、bootstrap (http://getbootstrap.com/)

3、Django    (https://www.djangoproject.com/)

4、DataTables (http://datatables.net/)

(2)、架构说明:

发布系统

1、开发人员将自己编译好的bin文件及配置文件 提交的 svn版本库

2、运维人员在发布系统后台 配置项目(录入项目名、svn路径、远程IP、目录、进程启动项等信息,并且配置发布权限)( 1和2不分先后 )

3、开发人员及运维人员通过发布系统web界面选择对应操作并提交(操作包括选择更新文件或者选择进程重启项等)

4、发布系统后台将根据开发的选择项目(如果是发布文件,将会同步svn代码到本地,然后打包发布)做出相应

5、最后,发布系统将指令/文件分发至对应服务器执行

(3)、自动化发布系统功能:

1、项目接入及项目配置录入 (支持批量添加)

2、发布文件  (支持中转机发布)

3、发布回滚  (支持发布文件回滚)

4、发布文件列表(动态获取svn目录文件列表,生成树结构)

5、更新(启停)进程 (支持组的更新,前提是需要在功能1中分配好组信息)

6、用户登录及权限管理(简易)

7、自定义触发脚本 (可以自定义脚本,类似svn的钩子功能)

(4)、web UI 浏览:

运维 /管理员可以添加项目及对应的svn信息等:

155731_p56Z_588586

配置进程信息等:

155731_4FFL_588586

发布文件界面:

155731_gR9s_588586

进程更新重启界面:

155732_tZeD_588586

四、实现中的各个重要点 及 个人学习体会 (更新中…. ),朋友,请猛戳

1、python + django + bootstrap  快速web开发初探

2、python 递归实现Easyui combotree树

3、python + django + bootstrap + uwsgi + nginx 环境搭建介绍

4、python 文件列表打包及解压(更新中…)

5、文件发布及命令执行

6、DataTables 应用介绍

 

转载请注明:Huangdc » 运维自动化发布系统

喜欢 (20)or分享 (0)
发表我的评论
取消评论
表情
(17)个小伙伴在吐槽
  1. 屌爆了
    yayaya2015-10-28 12:32 回复
  2. 这个要做起来很吊的。
    赞一个2016-03-10 10:07 回复
    • 已经在使用中,多多少少还是可以更多解放运维频繁操作,以及提高开发的发布效率[嘻嘻]
      Cong2016-03-10 10:19 回复
      • 有代码或者思路可以看吗?
        test2016-04-01 11:25 回复
  3. 亲,快更呀。我和你一样的情况,但是不会写= =
    shuoshadow2016-03-13 22:43 回复
  4. 除了框架用得不一样之外,其它的都差不多,看来这个需求还是蛮大的嘛
    专业坏蛋2016-03-13 22:43 回复
  5. 请教 是通过什么方式实现文件回滚的哪?
    zifu1@leju.com2016-04-18 22:21 回复
    • 回滚文件: 是通过发布文件前的备份文件来回滚 (也就是说,发布文件的时候,在覆盖文件之前先将旧文件备份起来,回滚就是根据这个备份文件,还原回去)
      Cong2016-04-20 17:33 回复
  6. 请教 中转机又是如何实现的哪? 使用的是rsync 同步文件的吧?
    zifu1@leju.com 线上运维一枚2016-04-18 22:23 回复
    • 中转机跟发布是一样的道理 ,只是在中间加了一层 (中转机负责将文件接收完,然后推送到目标机器);因为如果国外有服务器的话,发布会经常有网络问题
      Cong2016-04-20 17:34 回复
  7. 系统源代码公开了吗
    急急急2016-04-27 13:15 回复
    • 没有,因为目前公司使用,不方便。
      Cong2016-04-27 17:00 回复
  8. 请问在进程更新重启页面中,启动,重启和停止这些按钮点击之后到服务器响应这个过程是怎样实现的,能讲讲思路吗?
    Deng2016-11-16 11:32 回复
    • 就是将这个操作和进程信息发送到服务器的agent, 然后agent调用脚本来完成的
      Cong2016-11-16 16:50 回复
  9. 😛
    匿名2017-06-03 22:29 回复