关注environment cookbook pattern(特别是使用app.rb recipe for deployment),如果我有一个由前端客户端,后端API和一些服务组成的应用程序(每个不同的Visual Studio项目)并且可能在不同节点上运行)每个组件应该是整个环境食谱中的配方还是每个组件都有自己的食谱?
我认为每个组件本身都是一个不同的应用程序,因此应该有自己的环境手册。
否则我无法想象考虑到有多个节点,环境的app.rb配方将如何部署应用程序。
我是否通过正确思考?其他人如何使用Chef实现分布式应用程序?
编辑: 在仔细研究了几天后,我正在回归并解决 one environment cookbook 模式:
“MyApp”包含两个单独编译并驻留在不同节点上的软件组件:
当前的食谱设置:
myapp environment cookbook
- recipes
- webapp.rb
- restapi.rb
这是合乎逻辑的,还是每个软件组件都应该是自己的食谱?
在当前系统中,发布工件看起来像(每个配方都知道如何部署其工件):
myapp-vX.X.X artifact
- webapp.tar.gz
- restapi.tar.gz
- cookbooks.tar.gz
目前的版本:
Dev Test Prod
1.1.0 1.1.0 1.0.1
“我们需要将1.1.0中的webapp修复程序转移到prod,但我们还没有测试新的API功能。” - 经理
问题:“MyApp”生产环境要求与环境中的dev和test中的v1.1.0 cookbook不同。
可能的解决方案似乎有很多方法可以让这只猫受到伤害,但如果你不知道,我更喜欢选择#1。在决定答案之前,我想获得更多反馈。这有意义吗?
答案 0 :(得分:0)
我认为你是对的。由于每个都是独立的VS项目,它应该是它自己的应用程序食谱。这允许您对每个单独的食谱进行版本控制并更改其各自的部署。这将它们彼此分离,允许您对每个部署代码进行更改,而不会意外地影响其他工作代码。
环境食谱是一本食谱,其中包含特定于env的所有实例的内容,例如每个节点都使用ruby或python并且需要安装。
应用程序指南是特定于每个应用程序的东西,因此您的思维过程是正确的,这不应该在应用程序级别的环境中。另请注意,应用程序配置可以在环境级别完成并逐渐减少,但实际部署应该是应用程序手册。