1
我们有时候在烹饪环境中无法完全测试食谱,因为结果并不总是反映生产环境中可能发生的情况。作为一种解决方案是什么,我试图做的是冻结版本,像这样的环境:在其运行列表明确指定,像这样的新版本在单台生产服务器上测试食谱更新
{
"name": "production",
"description": "Production Environment",
"cookbook_versions": {
"deployment": "= 0.1.12"
},
...
,并排除该限制的特定服务器:
...
"run_list": [
"recipe[base]",
"recipe[security]",
"recipe[deployment::[email protected]]"
]
...
问题是,当环境的版本是不一样的,在run_list,厨师,客户指定的卡上resolving cookbooks for run list: ...
这是为什么?有没有办法解决这个问题?有没有更好的方法来在一台服务器上测试配方的更新?
不幸的是,这样会破坏目的,因为根据节点的环境,一些配方的行为会有所不同,也就是说,测试不会反映生产中会发生什么。此外,我不认为这是真的,这似乎是足够基本的设计。我还发现,即使在没有限制的情况下,在运行列表中使用特定版本时,厨师也会在同一个地方挂起。它似乎只是一个错误。 –
该功能很少使用,因为我们可以测试它,所以我可以相当自信地说它没有(简单的)错误。也就是说,即使存在,它也不会在环境中产生冲突约束,因为该错误是正确的并且按照设计工作。 – coderanger
另一种方法是在生产环境中禁用守护进程模式或后台聚合,更新环境,然后在少数机器上运行Canary部署。 – coderanger