如何在 Chef 控制的环境中组织部署流程?

如何在 Chef 控制的环境中组织部署流程?

我有一个基于 Linux 的 Web 基础架构,由 15 台虚拟机和 50 多种不同的服务组成。它完全由 Chef 控制。大多数服务都是内部开发的。

基本上,当前的部署过程由 shell 脚本触发。构建系统(Python 和 shell 脚本的混合)将服务打包为.deb文件,并将这些包放入存储库中。apt-get update然后它会在所有 15 个节点上运行,因为标准 Chef aptcookbook 每天只运行apt-get一次,而且我们绝对不想apt-get update在每次唤醒时无条件运行chef-client。构建系统chef-client最终会在所有 15 个节点上重新启动守护进程(由于 pull Chef 的性质,我们需要此步骤)。

当前流程有许多我们想要解决的缺点。首先,它是异步的,因为部署脚本chef-client在重启后不检查日志,所以我们甚至不知道部署是否成功。它甚至不等待 Chef 客户端完成周期。其次,我们绝对不想强制chef-client重启所有节点,因为我们通常只部署少量包。第三,我不太确定使用chef-client部署是否合法,可能我们从一开始就做错了。请分享您的想法/经验。

答案1

我认为您不需要重新启动客户端 - “chef-client --once” 就足够了。另外,如果我是您,我会制作一个数据包,其中标记了需要部署的包,并根据该包的数据运行 apt-get。

答案2

就成功/失败报告而言,你需要的是厨师处理员将成功/失败报告回某个中心聚合点。

相关内容