Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 使用Chef时如何处理软件的新版本?_Chef Infra - Fatal编程技术网

Chef infra 使用Chef时如何处理软件的新版本?

Chef infra 使用Chef时如何处理软件的新版本?,chef-infra,Chef Infra,我已经使用Chef在服务器上安装了MySQL。在我安装软件时,MySQL的版本是5.6.36。现在MySQL的5.6.40版本已经发布。如果我设置了一个新服务器(或使用Kitchen在本地进行测试),则会安装新版本,但当我在旧服务器上运行chef客户端时,它会说无需执行任何操作,并且会保留旧版本 我想我可以想出一个解决办法(比如创建配方的假更新),但是对于这种情况,什么是最佳做法呢?根据您想要的工作流,有一些选项。最简单的选项是根据需要覆盖每个节点上属性中的版本。这是最直接的方式,但也是最直接的

我已经使用Chef在服务器上安装了MySQL。在我安装软件时,MySQL的版本是5.6.36。现在MySQL的5.6.40版本已经发布。如果我设置了一个新服务器(或使用Kitchen在本地进行测试),则会安装新版本,但当我在旧服务器上运行chef客户端时,它会说无需执行任何操作,并且会保留旧版本


我想我可以想出一个解决办法(比如创建配方的假更新),但是对于这种情况,什么是最佳做法呢?

根据您想要的工作流,有一些选项。最简单的选项是根据需要覆盖每个节点上属性中的版本。这是最直接的方式,但也是最直接的方式,因为您必须或多或少地为每个相关服务器手动管理事情。另一种选择是使用包装器手册,其中说明了您要使用的版本(可能有一些关于在不同地方使用不同版本的逻辑),然后在您想要进行更改时,通过正常的工作流/管道交付包装器手册。您还可以将版本存储在环境或策略组级别的属性中。哪个版本最适合您完全取决于您当前的团队和工作流程。

我不想接触该版本,因为我希望它尽可能免维护。我有一个大致可行的解决方案。具体来说,我的食谱是使用超市的mysql食谱;此配方自动安装mysql。我添加了以下代码:
package'mysql community server'do action:upgrade end
来强制将服务器升级到最新版本,这似乎有效。我只是不确定这是否是解决这类问题的最佳实践。如果你相信MySQL永远不会发布有缺陷的版本,那就好了。你相信多少?:)实际上,我有自己的MySQL repo,因此我将手动向我的repo中添加新版本的软件包,然后配方应该提取新版本,并在可用时安装它们。然后我同意这有点像手动更新配方中的版本。是的,然后
操作:升级
绝对是一种方法:)