一、 设计出发点
因公司业务面临频繁的迭代上线,一日数次。仅仅依靠手工效率过低且易出错。
考虑搭建一套可以满足现有场景的上线系统。
二 、为何采用ansible+shell方式
1.可控性(完全自主拥有,不涉及版权)
2.稳定性(底层脚本,只要脚本固定测试成功,后期稳定)
3.灵活性 (可根据业务系统变化随时做出修改以满足业务发展需要)
注:公司测试环境已经使用了JENKINS作为内网持续部署使用,(生产环境没有采用JENKINS是因为插件多,频繁升级插件。若不及时升级跨版本太多有时会报错,维护成本高,若IP部署于外网,JENKINS不及时升级会有被扫描和入侵的风险)
三、实现方式
1.server端
通过ansible+shell 实现连接公司内部VPN+拉取SVN代码+ 将代码打包+拷贝到目标服务器+触发目标服务器脚本执行
2.client端
为线上系统业务服务器
通过ansible触发执行机器上的shell完成 备份现有代码+解压代码包+删除.svn信息文件+更新代码+导入数据库语句+重启操作+错误判断
注:不在server端统一存放脚本通过ansible触发执行的目的是,若server端网络不佳,或出现问题,可以通过手工上传代码包到指定目录再执行脚本完成上线。(提高可靠性)另外存放的shell在server端统一存在备份,若更新,可通过ansible再下发到目标机器。