chef 上的软件包版本

chef 上的软件包版本

我们正在使用 chef 部署多节点 PHP 环境。

我为特定的服务器角色编写了一些手册,用于安装应用程序使用的某些包(主要使用包管理器)。

现在,我希望 chef 能够让这些节点上的软件包保持最新状态。我们有两个环境:开发和生产。例如,当新版本的 PHP 发布时,我希望在我们的开发环境中测试这个新版本,然后将其推广到生产环境。我在安装 PHP 的配方中的软件包定义如下所示:

package 'php' do
  action :install
  version '5.3.27'
end

5.3.28 版本发布后我该采取哪些步骤?

答案1

Chef 的最佳实践是始终从相同的“进入”状态开始。如果您要部署到云,我会创建一个全新的 VM 并从头开始部署 PHP。

如果您没有这种奢侈,那么您将处于必须维持两个已知起始状态的境地。 (1) 未安装 PHP 和 (2) 安装了旧版本的 PHP。

您不能将它们链接在一起,总是先安装 5.3.27,因为这会破坏该资源的幂等性。

我建议您手动卸载 5.3.27 并重新开始安装 5.3.28 chef。

最后,我建议尽量避免使用 chef 角色。它们无法进行版本控制,而且当开发和生产系统共享同一角色时,更新会很困难(即,如何在不影响两个环境的情况下更改角色?)相反,请考虑使用父级 cookbook 进行协调。

相关内容