【发布时间】:2014-12-05 15:17:13
【问题描述】:
背景
我们公司最近决定最终使用 Chef 自动化我们的部署流程,而我的任务是实施这一点。作为一名开发人员,我目前正在努力寻找如何组织和构建方法和食谱的最佳方法,以便我也可以在 Vagrant 的开发环境中使用它们。
我们有大约 10 个应用程序需要部署到多个环境(开发、登台、验收、生产、演示)。每个应用程序都在相同的基本技术堆栈和平台上运行。其中一些应用程序实际上是其他应用程序的子服务。
在阅读了几篇教程、学习厨师以及观看无尽的视频之后,我开始使用 berkshelf 创建几本食谱(每本食谱都在它自己的 GIT 存储库中):
- 1 x 用于设置基本基础架构的说明书(设置管理员用户、安装基本系统工具、sudo、sshd 等)
- 1 x 设置平台的说明书(在我们的例子中:具有固定 PHP 版本的 LAMP)
- 10 份说明书来设置每个应用程序
问题
这是整理食谱的正确方法吗?尽管应用程序说明书需要首先运行基础设施和平台说明书才能设置基本系统,但这些说明书都没有相互依赖(目前)。目前,每个应用程序都有相同的技术堆栈要求——因此将相同的依赖项添加到每个应用程序说明书中似乎有点奇怪。是否仍应明确提及应用程序的确切依赖性(对于通过平台说明书安装的软件包,例如 apt)?然后如何将这一切捆绑在一起以将其部署到目标机器?我是否需要另一本将特定应用程序结合在一起的“容器”食谱(所有机器和食谱的单一厨师回购?)?我需要角色来完成这项工作吗?
【问题讨论】:
标签: chef-infra