Chef infra 特定于环境的厨师数据库

Chef infra 特定于环境的厨师数据库,chef-infra,Chef Infra,我正在尝试确定数据包的最佳方法,我的障碍是我不明白为什么我不能只包含一个包含每个环境所有内容的数据包。我发现为烹饪书准备个人数据包似乎是一种常态 我最初的理解是: dev.json - mysql_password: 234983 - mysql_user: heyhey - mysql_host: somewhere.com - newrelic_api: something uat.json - mysql_password: 111113 - mysql_user: root - mys

我正在尝试确定数据包的最佳方法,我的障碍是我不明白为什么我不能只包含一个包含每个环境所有内容的数据包。我发现为烹饪书准备个人数据包似乎是一种常态

我最初的理解是:

dev.json

- mysql_password: 234983
- mysql_user: heyhey
- mysql_host: somewhere.com
- newrelic_api: something
uat.json

- mysql_password: 111113
- mysql_user: root
- mysql_host: somewhere-else.com
- newrelic_api: something-else
属性/default.rb

- load <chef-env> databag
- mysql_password = databag.item.mysql_password
-加载数据包
-mysql\u password=databag.item.mysql\u password

这是一种不好的方法,或者他们有任何这样做的注意事项吗?

除此之外,我不会将读取数据包的逻辑放入属性文件中,这听起来是合法的。我更喜欢将每个烹饪书的数据包分开。这允许我在其他设置中重复使用烹饪书,而不必依赖run_列表中的“基本数据包阅读器/映射器”。另外,如果您使用由节点属性配置的社区食谱,那么您必须编写一个包装器食谱来将数据包数据映射到属性。这应该属于包装器烹饪书,而不是单一的“映射”-烹饪书。然而,当我有一本将几部分包装在一起的“应用程序烹饪书”时,我会使用每个应用程序的数据包,例如“apps/railsapp_production.json”,Chef,Inc.就是应用程序烹饪书/数据包的一个很好的例子。