运维自动化发布系统

摘要:
大家好,O&M自动出版系统。最近,我们正在学习用Python构建服务器发布系统。游戏版本的发布是日常运维工作的主要部门,这项工作频繁、重复、反复进行。操作和维护必须采用一些自动操作和维护方法来处理版本更新的发布;它是实现自动操作和维护的必要手段。以下是根据公司业务需求开发的定制化运维自动发布系统。一、 背景:该公司的游戏业务应用程序需要经常更新到在线服务器。开发人员打包的bin文件存储在SVN服务器上。操作和维护需求

运维自动化发布系统

大家好哈,最近在学习用 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 应用介绍

免责声明:文章转载自《运维自动化发布系统》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用IDEA写Python之pytest环境搭建及第一个程序编写直播P2P技术1-技术入门下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python嵌入C++ boost.python如何在C++中调用含有不定长参数tuple变量和关键字参数dict变量的函数

    这个问题是在我尝试利用pygraphviz嵌入我的C++代码绘制二叉树的时候发现的.找了半天资料,这里我把几种常用的C++调用 PYTHON利用 boost.python 的方法作一个总结,希望能让别人少走弯路,因为有些内容还找不到中文文档,虽然都不难但是开始摸索 还是费时间的.     我个人认为boost.python真的是非常的COOL,基...

Python标准库存储对象(pickle包,cPickle包)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 在之前对Python对象的介绍中 (面向对象的基本概念,面向对象的进一步拓展),我提到过Python“一切皆对象”的哲学,在Python中,无论是变量还是函数,都是一个对象。当Python运行时,对象存储在内存中,随时等待系统的调用。然而...

Linux下多版本python共存时,默认执行路径修改方法

遇到的问题和环境是这样:首先workspace上存在一个Python2.7和一个Python3.5,其中Python3.5是理想的运行环境,有很多自定义模块,运行代码时需要这个环境。原本默认是在这个环境下跑的,后来安装了一个叫miniconda3的东西,里面自带一个Python3.7环境,于是问题来了,所有执行程序全部变成了使用这个新的Python3.7环...

python 连接oracle -- sqlalchemy及cx_Oracle的使用详解

python连接oracle -- sqlalchemy import cx_Oracle as orcl import pandas as pd from sqlalchemy import create_engine # 数据库连接 db = create_engine('oracle://qmcb:qmcb@localhost:1521/tqmcb...

[python]django rest framework写POST和GET接口

版本声明 python3.6.5 Django-2.0.6 djangorestframework-3.8.2 mysqlclient-1.3.12 1.写一个登录接口,不多说,直接上代码 login_models.py # -*- coding: utf-8 from django.db import models # Create your mode...

python selenium 基本常用操作

 最近学习UI自动化,把一些常用的方法总结一下,方便自己以后查阅需要。因本人水平有限,有不对之处多多包涵!欢迎指正! 一、xpath模糊匹配定位元素 武林至尊,宝刀屠龙刀(xpath),倚天不出(css),谁与争锋  学会了xpath,妈妈再也不用担心我定位不到元素啦 ^_^ # coding:utf-8 import time from seleniu...