版本更新发布WEB化(0)_前期构思

之前在第1个运维平台上用PHP实现了WEB页面操作版本更新的功能。为了使运维平台的质量更上一个层次,这次用的是Django框架,之前陆续完成了:WEB页面执行Salt命令、硬件资产管理(自动化收集)、软件应用管理(自动化收集)、Zabbix与RRDtool整合(这个在我的blog中有详细的介绍)。接下来就是比较重要的版本更新功能了。

不管WEB的前端和WEB后端的逻辑怎么变,底层都要适应之前已经成熟稳定运行的版本更新结构框架。处理后端逻辑可以这样来:

1、上传ZIP包,ZIP包采用全目录结构,为了防止上传代码过程出错在ZIP包的根目录有一个带MD5码值的文件。

2、对上传的文件解包,服务器端对其每个文件做MD5码校验,并将所有的MD5码值记录到一个文件,然后拿该文件与ZIP包中的MD5记录文件比较,如果不同提示上传代码和其记录的MD5值不符合。直到上传的代码和提供的MD5相同才进入下一步。

3、在git的work目录中将要替换的旧文件,拷贝一份打包用于回滚。然后将要更新的文件替换work目录中的文件。

4、调用saltapi执行salt的git模块依次执行git.add、git.status、git.commit、git.push完成代码的所有提交工作。

5、用saltapi调用需要更新代码的服务器,同步更新后的代码,完成更新服务。

6、回滚就是将第三步中备份的ZIP包大致按3、4、5做一遍就好。

原创转载请注明出处:http://www.xiaomastack.com/2014/09/01/release-0/ 谢谢!

发表评论:

你的电子邮件地址将不会被公开.

96 − 90 =