原文日期:2017-04-30
一直都想着等有机会闲下来总结下自动化运维的工作,毕竟实打实的过来的。可能由于自己的懒惰吧,这件事情一拖再拖,并且期间断断续续了几次。加上自己文采实在是不可恭维,连我自己都读不顺
,更别说让大家来看呢。但是不管怎么说,即使再不好的文采,也还是要有做笔记总结的权利与习惯吧,毕竟那证明你曾经经历过。
总结一些这些几个月的工作,主要是下图所概述的。
遇到的坑和注意事项。
- Docker容器的数据需要挂载到主机中,不然每次Docker容器重启都会把数据清理掉
- 因网络安全原因,服务器网络分为四个区,并且四个区禁止通信。如果只使用一台Jenkins服务器去发布所有区的系统,网络安全部门担心这台Jenkins服务器被攻击,导致所有区服务器被攻击,因此出现了四台Jenkins服务器(个人觉得没这必要)。
- 因Jenkins服务器不在网络区,不能访问外网,无法安装插件。退而求其次,在本地Jenkins服务器上安装需要的插件,在将本地插件文件导入到服务器上的Jenkins上。
- 因要做到开发人员提交代码,Jenkins服务器就去做自动构建检查任务。故而要在Jenkins服务器暴露一个接口,并配置在Gitlab服务器的Webhook配置项中。
- Jenkins服务器需要发送邮件给对应的开发人员,但开发人员在Gitlab上的邮箱号是根据AD域自动生产,并且是错误的,不能修改。故而在Jenkins上通过发送邮件前,通过脚本将收件人邮箱统一修改,使用Groovy语言。
- Jenkins服务器和数据库服务器不在一个网段,不能访问并发布数据库脚本。但Jenkins服务器可以访问应用服务器,应用服务器可以访问数据库,故而在Jenkins服务器上增加ssh端口跳转。执行如下命令
$ ssh -N -f -L <local-port>:<db-IP>:<db-port> <app-username@app-ip>
则访问localhost:local-port ==> db-ip:db-port,这两个是等价的
- nexus私服添加代理私服,目前国内最好的就是aliyun仓库。
- Groovy闭包概念重要,必须熟悉使用。
- 制定项目规范,尽量统一Gradle项目规范,以便发布脚本统一。
Gitlab官方文档:docs.gitlab.com/omnibus/REA…
Jenkins插件:plugins.jenkins.io/
Gradle官方文档:docs.gradle.org/current/dsl…
Gradle插件网址:plugins.gradle.org/
Docker官方文档:docs.docker.com/