基于 django 做了一个部署公司产品的工具,
功能:
部署产品的原理大致是:
将公司的产品和各种依赖包(rpm 包和 python 包)以及我的部署脚本打包成 tar.gz 文档, 然后上传到远程服务器上解压, 再加上参数运行部署脚本, 本地服务器也采用使用 ip 地址传送的方式, 一是部署里面很多地方都需要 ip 参数, 二是可以校验部署产品的人员确实知道当前服务器的登陆信息(本来之前是分成了远程和本地两套逻辑, 后来改用了现在的方式)
因为 rpm 依赖包占了整个压缩包的 80%以上, 上传部署包非常耗时, 而且之前测试的时候, 遇到过各种依赖包的坑,
现在打算做一个定制化 iso 系统镜像, 将我的工具和我们的产品在装系统的时候就装进去,
我的工具的安装不需要任何参数, 可以在装系统的时候就装好,
但是产品的安装是需要传很多参数的, 所以不可能在装系统的时候装好, 只能先把依赖装好
目前我想的是两个方案:
方案 1 的缺点是工具几乎只能在这种定制的系统内部署产品, 不论是本地还是远程的
方案 2 则是只要目标主机装了相应的依赖包就可以,
私以为两个方案都不太理想, 想请教一下有没有更合理的设计?
1
lihongjie0209 2019-08-29 10:42:19 +08:00
rpm 依赖的问题可以直接在远程服务器上建立一个 yum localrepo
|
2
firejoke OP @lihongjie0209 #1 我知道啊, 那这个本地源从哪来? 还是要我远程推送吗? 我们的要求是要做到傻瓜式部署
|
3
lihongjie0209 2019-08-29 10:50:27 +08:00
|
4
firejoke OP @lihongjie0209 #3 现在不是 rpm 包的坑, 而是想缩小部署包的体积, 以及不要让部署人员去命令行输命令, 所以想做定制化的系统
|
5
kkbblzq 2019-08-29 11:13:32 +08:00
为什么不用容器呢
|
7
lihongjie0209 2019-08-29 11:27:52 +08:00
@firejoke #4 那你可以考虑 ansible 之类的系统配置工具, 写好配置一键搞定
|
8
firejoke OP @lihongjie0209 #7 ansible 要做无密码登陆, 有考虑过之后用这个, 增加个界面,
|
9
aa543187001 2019-08-29 11:49:00 +08:00
容器就可以相当于你那个镜像的原理, 容器在启动的时候也可以选择很多参数化
|
10
kkbblzq 2019-08-29 11:55:46 +08:00
@firejoke 容器的好处在于一次打包,就可以任意的部署,统一了目标程序的运行环境,把复杂的环境配置转换成单一的 docker 运行环境的配置,比如说你可以把所有基础环境的打包成一个基础镜像,然后基于这基础镜像来配置打包成产品镜像。然后部署主机只要配置好 docker 环境就可以跑你们的产品。
|
11
firejoke OP @aa543187001 #9
@kkbblzq #10 emmmm, 查了下 docker 和我们的产品中使用到的框架, 有相应的使用 docker 部署的方案, 但貌似连我们的服务都要做相应的修改, 不是个小工程, 以后给组长提一下吧, 目前就按现在的方案来, 后期再上 ansible |
12
dany813 2019-08-29 20:06:35 +08:00
好巧啊,刚做了一个类似的工具,也是部署公司产品的
我这边也是制作了一个 ISO 镜像,然后刻录到光盘里面,客户拿到光盘后,一键恢复,里面包含了公司的软件服务,在镜像里面包含了一个运维的系统,设置的开机自启动,只要系统恢复后,就通过 IP 加固定端口打开,然后后续有软件要更新的话,直接扔给客户一个更新包,客户自己上传,然后启动。 |
13
dany813 2019-08-29 20:07:19 +08:00
我们没法用 docker,因为都是内网部署的。。要是可以用 docker 就方便了
|