【问题标题】:CHEF - Best Practice to pass data from an Orchestrator to Chef?CHEF - 将数据从 Orchestrator 传递给 Chef 的最佳实践?
【发布时间】:2023-03-31 16:49:01
【问题描述】:
我大约一个月前才开始使用 Chef,所以还是很绿色。我正在创建一本食谱,它将以 RPM 的形式部署我们的应用程序。如果我在属性中硬编码我想要的 RPM 的版本,它就可以正常工作。但是,同一应用程序 RPM 会有多个版本,它们来自不同的团队和源代码控制中的不同分支。
我需要从构建协调器中动态输入我想要的特定版本的 RPM。我曾考虑让它使用每个版本的版本信息更新数据包,并使用它来获取我想要的版本,但好奇其他人在类似情况下做了什么?在我为 60 多个应用程序执行此操作之前,尽量避免从一开始就走错路。
谢谢,
乔恩
【问题讨论】:
标签:
chef-infra
build-process
versioning
【解决方案1】:
我使用环境属性覆盖来管理部署时间设置:
echo '{"name":"app-2_0","override_attributes":{"app":{"version":"2.0"}}}' > demo.json
knife environment from file demo.json
与我的应用程序实例关联的所有服务器都使用此环境进行引导。
knife bootstrap server1 --environment app-2_0 ...
使用环境的第二个好处是,您还可以在加载新说明书时设置说明书版本限制。确保运行时行为不会改变。
knife cookbook upload -E app-2_0 -o cookbooks --all --freeze --force