AWS Opsworks 中的 Chef 环境

Posted

技术标签:

【中文标题】AWS Opsworks 中的 Chef 环境【英文标题】:Chef environments in AWS Opsworks 【发布时间】:2017-09-04 03:38:35 【问题描述】:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于AWS Opsworks 中的 Chef 环境的主要内容,如果未能解决你的问题,请参考以下文章

Chef 12 + AWS Opsworks + 从 s3 部署应用程序

从 AWS Opsworks Stacks Chef 11 迁移到 Chef 12 - 堆栈属性问题

特定的 nodejs 版本,opsworks_ruby,aws,chef 12

如何在 MacOS 中安装 chef 12 以部署到 AWS Opsworks?

无法在 AWS Opsworks 上使用 Chef 12 查找 Chef 社区食谱

AWS opsworks 上的 chef 12 脚本无法安装 jenkins