AWS Opsworks 中的 Chef 环境

Chef environments in AWS Opsworks

自从 AWS Opsworks 向 Opsworks 添加了对 Chef 12 的支持后,似乎也支持 Chef 环境。我对厨师很陌生。据我了解,厨师环境存储在我的食谱库中的 environments/ 文件夹中。因此,我在此处创建了一个 testing.json 文件,其名称属性使用了这个确切的名称。我从大厨doku那里得到了模板

我在测试堆栈的自定义 json 中定义了一个 chef_environment-attribute,将此环境设置为 'testing'(我的环境)。

我正在使用 berks package 将食谱打包成 tarball。我通过 S3 将它们拉入我的示例 Opsworks 堆栈中。我 运行 update_custom_cookbooks 在我的堆栈上失败,并显示厨师找不到环境测试的消息。

我首先注意到 berks package 不包含 environment/-folder,因为它不是食谱。因此,我将环境文件夹添加到压缩包中。我尝试再次更新食谱,但失败并显示相同的消息。

那么我的误解是什么? opsworks 想告诉我什么?

OpsWorks Stacks 不支持 Chef 环境。由于它基于 Chef Solo,因此支持并没有太多价值。普通 Chef 中角色和 envs 之间的主要区别在于 envs 可以指定 cookbook 版本要求,但是由于 Solo 要求您事先处理依赖项解析(在您的情况下通过 berks package),因此无法使用此功能。您可以创建一个具有相同属性信息的角色并使用它来代替。在处理也使用 Chef Search 的环境感知食谱时,这可能会有点烦人,但由于这些食谱很少在 OpsWorks Stacks 上工作,所以这并不常见。