Chef infra Handle cookbook版本取决于环境

Chef infra Handle cookbook版本取决于环境,chef-infra,devops,Chef Infra,Devops,我有一个疑问。我已经为应用程序创建了cookbook,在构建时,我正在根据环境更改cookbook的属性。所以在构建结束时,我生成了一些工件。一个用于实际产品,另几个用于每个环境的烹饪书工件。 现在,我的疑问是,在这里如何处理每本食谱的版本? 在构建过程中,我可以只有一个版本,但是如果我将相同的版本应用于所有的Cookbook,那么当我在所选节点上运行chef客户端时,它们将相互覆盖。 有人能告诉我怎么处理吗 关于可以在metadata.rb下管理食谱的版本 name '

我有一个疑问。我已经为应用程序创建了cookbook,在构建时,我正在根据环境更改cookbook的属性。所以在构建结束时,我生成了一些工件。一个用于实际产品,另几个用于每个环境的烹饪书工件。 现在,我的疑问是,在这里如何处理每本食谱的版本? 在构建过程中,我可以只有一个版本,但是如果我将相同的版本应用于所有的Cookbook,那么当我在所选节点上运行chef客户端时,它们将相互覆盖。 有人能告诉我怎么处理吗


关于

可以在
metadata.rb
下管理食谱的版本

name             'helloworld'
maintainer       'YOUR_COMPANY_NAME'
maintainer_email 'YOUR_EMAIL'
license          'All rights reserved'
description      'Installs/Configures helloworld'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version          '0.1.0'
若Chef环境是基于Dev、Prod或Test创建的,那个么我们可以在每个环境下标记一个cookbook版本,这样在运行Chef客户端时就不会有任何冲突

例如

env_dev.rb

name "development"
description "The master development branch"
cookbook_versions({
    "nginx" => "<= 1.2.1",
    "apt" => "= 0.0.2"
})
name "production"
description "The master production branch"
cookbook_versions({
    "nginx" => "<= 1.1.0",
    "apt" => "= 0.0.1"
})
名称“开发”
说明“硕士开发部”
烹饪书({
“nginx”=>”