请教如何设计更合理

2019-08-29 10:31:34 +08:00
 firejoke

基于 django 做了一个部署公司产品的工具,
功能:

部署产品的原理大致是:

将公司的产品和各种依赖包(rpm 包和 python 包)以及我的部署脚本打包成 tar.gz 文档, 然后上传到远程服务器上解压, 再加上参数运行部署脚本, 本地服务器也采用使用 ip 地址传送的方式, 一是部署里面很多地方都需要 ip 参数, 二是可以校验部署产品的人员确实知道当前服务器的登陆信息(本来之前是分成了远程和本地两套逻辑, 后来改用了现在的方式)

因为 rpm 依赖包占了整个压缩包的 80%以上, 上传部署包非常耗时, 而且之前测试的时候, 遇到过各种依赖包的坑,
现在打算做一个定制化 iso 系统镜像, 将我的工具和我们的产品在装系统的时候就装进去,
我的工具的安装不需要任何参数, 可以在装系统的时候就装好,
但是产品的安装是需要传很多参数的, 所以不可能在装系统的时候装好, 只能先把依赖装好
目前我想的是两个方案:

方案 1 的缺点是工具几乎只能在这种定制的系统内部署产品, 不论是本地还是远程的
方案 2 则是只要目标主机装了相应的依赖包就可以,
私以为两个方案都不太理想, 想请教一下有没有更合理的设计?

2090 次点击
所在节点    程序员
18 条回复
lihongjie0209
2019-08-29 10:42:19 +08:00
rpm 依赖的问题可以直接在远程服务器上建立一个 yum localrepo
firejoke
2019-08-29 10:47:35 +08:00
@lihongjie0209 #1 我知道啊, 那这个本地源从哪来? 还是要我远程推送吗? 我们的要求是要做到傻瓜式部署
lihongjie0209
2019-08-29 10:50:27 +08:00
@firejoke #2
如果没有外网, 你需要本地上传
如果有外网, 你可以使用私有仓库

不管怎么说,rpm 包安装在 yum 下没什么坑
firejoke
2019-08-29 10:52:43 +08:00
@lihongjie0209 #3 现在不是 rpm 包的坑, 而是想缩小部署包的体积, 以及不要让部署人员去命令行输命令, 所以想做定制化的系统
kkbblzq
2019-08-29 11:13:32 +08:00
为什么不用容器呢
firejoke
2019-08-29 11:17:55 +08:00
@kkbblzq #5 容器? 可以解决哪方面的问题?
lihongjie0209
2019-08-29 11:27:52 +08:00
@firejoke #4 那你可以考虑 ansible 之类的系统配置工具, 写好配置一键搞定
firejoke
2019-08-29 11:46:51 +08:00
@lihongjie0209 #7 ansible 要做无密码登陆, 有考虑过之后用这个, 增加个界面,
aa543187001
2019-08-29 11:49:00 +08:00
容器就可以相当于你那个镜像的原理, 容器在启动的时候也可以选择很多参数化
kkbblzq
2019-08-29 11:55:46 +08:00
@firejoke 容器的好处在于一次打包,就可以任意的部署,统一了目标程序的运行环境,把复杂的环境配置转换成单一的 docker 运行环境的配置,比如说你可以把所有基础环境的打包成一个基础镜像,然后基于这基础镜像来配置打包成产品镜像。然后部署主机只要配置好 docker 环境就可以跑你们的产品。
firejoke
2019-08-29 17:50:42 +08:00
@aa543187001 #9
@kkbblzq #10
emmmm, 查了下 docker 和我们的产品中使用到的框架, 有相应的使用 docker 部署的方案, 但貌似连我们的服务都要做相应的修改, 不是个小工程, 以后给组长提一下吧, 目前就按现在的方案来, 后期再上 ansible
dany813
2019-08-29 20:06:35 +08:00
好巧啊,刚做了一个类似的工具,也是部署公司产品的
我这边也是制作了一个 ISO 镜像,然后刻录到光盘里面,客户拿到光盘后,一键恢复,里面包含了公司的软件服务,在镜像里面包含了一个运维的系统,设置的开机自启动,只要系统恢复后,就通过 IP 加固定端口打开,然后后续有软件要更新的话,直接扔给客户一个更新包,客户自己上传,然后启动。
dany813
2019-08-29 20:07:19 +08:00
我们没法用 docker,因为都是内网部署的。。要是可以用 docker 就方便了
renothing
2019-08-30 08:24:05 +08:00
@dany813 内网部署也能用 docker 啊。docker 镜像又不是不可以导入导出。
maichael
2019-08-30 09:21:48 +08:00
@dany813 #13 内网也可以的,既可以用自建 registry,也可以直接导入导出。
firejoke
2019-08-30 14:39:54 +08:00
@dany813 #12 你们的产品不需要配置参数什么的吗?
firejoke
2019-09-02 17:40:11 +08:00
@dany813 #12 对了, 你们产品升级怎么做的? 总不会重装一次吧
dany813
2019-09-02 22:50:57 +08:00
@firejoke 产品升级 给他升级后的包,直接上传升级,配合参数都是在配置文件里面写好的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/596111

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX