我是开发运营方面的新手,我一直在努力将 Python 应用程序打包成 RPM(使用 python setup.py bdist_rpm),并通过 Yum 部署到 centos VM 上。Chef 用于管理 VM。Python 应用程序将在虚拟环境中运行,作为持续部署过程的一部分。
RPM 是否应该智能且独立,执行诸如创建/启动 virtualenv 环境、pip 安装所需的依赖项以及最终配置 init 进程(在本例中为 virtualenv 启动 uwsgi REST 服务器进程)之类的操作?
或者,Chef 配方是否应该管理构建虚拟环境和 pip 安装依赖项,而 RPM 本身则执行简单的“python setup.py install”以将我的 Python 模块加载到虚拟环境的 pythonX.Y/site-packages 文件夹中?
后续的“yum install/reinstall”调用(例如通过自动化流程)适用于这两种方法,但前者需要更复杂的 RPM,这可能不是“最佳实践”,对吗?前者确实允许独立安装,以后可以更干净地删除,并且更好地区分开发人员(Python)和开发运维人员(Chef)之间的关注点。请告知“通常”要做什么。
答案1
这Chef cookbook 似乎相当不错。它为您想要做的事情提供支持。对于通常要做的事情,我只能从 Puppet 的角度来处理,但我认为没有必要在 RPM 中添加这种复杂性,因为 cookbook 可以轻松支持它。您只是在以后需要进行更改时为自己增加了更多工作,并使其他用户更难提供支持。