

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# OpsWorks Stacks 对 Chef 12 Linux 的支持
<a name="chef-12-linux"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

本节简要概述了 Chef 12 Linux 的 OpsWorks 堆栈。有关 Windows 上的 Chef 12 的信息，请参阅[入门：Windows](gettingstarted-windows.md)。有关 Linux 上的早期 Chef 版本的信息，请参阅[适用于 Linux 的 Chef 11.10 及早期版本](chef-11-linux.md)。

## 概述
<a name="chef-12-linux-overview"></a>

 OpsWorks Stacks 支持 Chef 12（最新版本的 Chef）适用于 Linux 堆栈。有关更多信息，请参阅[了解 Chef](https://docs.chef.io/)。

 OpsWorks Stacks 继续支持 Chef 11.10 的 Linux 堆栈。不过，如果您是高级 Chef 用户，并且您想从大量可选的社区说明书中获益，或编写您自己的自定义说明书，建议您使用 Chef 12。相对于 Chef 11.10 以及早期 Linux 堆栈，Chef 12 堆栈提供了以下优势：
+ **两个单独的 Chef 运行** ——在实例上执行命令时， OpsWorks Stacks 代理现在会执行两次隔离的 Chef 运行：一次运行用于将实例与其他 AWS 服务 AWS Identity and Access Management （例如 (IAM)）集成的任务，另一次运行您的自定义食谱。第一次 Chef 运行会在实例上安装 OpsWorks Stacks 代理并执行系统任务，例如用户设置和管理、卷设置和配置、 CloudWatch 指标配置等。第二个运行专用于运行[OpsWorks 堆栈生命周期事件](workingcookbook-events.md)的自定义配方。利用第二个运行，您可以使用自己的 Chef 说明书或社区说明书。
+ **解决命名空间冲突** – 在 Chef 12 之前， OpsWorks Stacks 在共享环境中执行系统任务并运行内置配方和自定义配方。这导致命名空间冲突以及对 OpsWorks Stacks 运行了哪些配方不清楚。必须手动覆盖不需要的默认配置，这是一项耗时且容易出错的任务。在 Linux 版 Chef 12 中， OpsWorks Stacks 不再支持适用于 PHP、Node.js 或 Rails 等应用程序服务器环境的内置 Chef 食谱。通过消除内置配方， OpsWorks Stacks 消除了内置配方和自定义配方之间命名冲突的问题。
+ **对厨师社区食谱的大力支持** — OpsWorks Stacks Chef 12 Linux 为厨师超市的社区食谱提供了更好的兼容性和支持。现在，您可以使用优于 OpsWorks Stacks 之前提供的内置食谱的社区食谱，这些食谱专为在最新的应用程序服务器环境和框架中使用而设计。您可以运行大多数说明书而无需修改 Chef 12 for Linux。欲[了解更多信息，请访问 Learn Chef 网站的 [Chef](https://docs.chef.io/supermarket.html) Supermarket、Ch](https://docs.chef.io/) [ef Super](https://supermarket.chef.io/) market 网站和上[GitHub](https://github.com/)的 [Chef Cookbooks](https://github.com/chef-cookbooks) 存储库。
+ **及时更新 Chef 12** —— OpsWorks Stacks 将在每次 Chef 发布后不久将其厨师环境更新到最新的 Chef 12 版本。在 Chef 12 中，Chef 的次要更新和新的 OpsWorks Stacks 代理版本将同时发布。这可让您直接测试新的 Chef 版本，并使您的 Chef 配方和应用程序能够利用最新的 Chef 功能。

有关 Chef 12 之前的受支持的 Chef 版本的更多信息，请参阅[适用于 Linux 的 Chef 11.10 及早期版本](chef-11-linux.md)。

## 移至 Chef 12
<a name="chef-12-linux-moving-to"></a>

与之前的 Chef 版本 11.10、11.4 和 0.9 的支持相比，Chef 12 Linux 的关键 OpsWorks 堆栈变化如下：
+ 对于适用于 Linux 堆栈的 Chef 12，不再提供或支持内置层。由于仅执行您的自定义配方，因此，删除此支持将使实例的设置方式变得完全透明，并使自定义说明书更易于编写和维护。例如，不再需要覆盖内置 OpsWorks Stacks 配方的属性。移除内置层还可以让 OpsWorks Stacks 更好地支持由 Chef 社区开发和维护的食谱，这样你就可以充分利用它们。适用于 Linux 的 Chef 12 中不再可用的内置层类型有：[AWS Flow (Ruby)](https://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-awsflow.html)、[Gangli](https://docs.aws.amazon.com/opsworks/latest/userguide/layers-other-ganglia.html) [a [HAProxy](https://docs.aws.amazon.com/opsworks/latest/userguide/layers-haproxy.html)、Java App Server](https://docs.aws.amazon.com/opsworks/latest/userguide/layers-java.html)、M [emcac](https://docs.aws.amazon.com/opsworks/latest/userguide/layers-other-memcached.html) hed、[MySQL](https://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-db-mysql.html)、[Node.js 应用程序服务器](https://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-node.html)、[PHP 应用程序服务器](https://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-php.html)、[Rails 应用程序服务器](https://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-rails.html)和[静态 Web](https://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-static.html) 服务器。
  + 由于 OpsWorks Stacks 正在运行您提供的食谱，因此不再需要通过运行自定义食谱来覆盖内置的 OpsWorks Stacks 属性。要覆盖您自己的配方或社区配方中的属性，请按照 Chef 12 文档中的[关于属性](https://docs.chef.io/attributes.html)中的说明和示例执行操作。
+ OpsWorks Stacks 继续为 Chef 12 Linux 堆栈的以下层提供支持：
  + [自定义层](workinglayers-custom.md)
  + [Amazon RDS 服务层](workinglayers-db-rds.md)
  + [ECS 集群层](workinglayers-ecscluster.md)
+ Chef 12 Linux 的堆栈配置和数据包已更改，与 Chef 12.2 Windows 的对应项非常相似。这可让您更轻松地查询和分析这些数据包并排查其问题，尤其是在您使用具有不同的操作系统类型的堆栈时。请注意， OpsWorks Stacks 不支持加密的数据包。要以加密形式存储敏感数据，例如密码或证书，我们建议将其存储在私有 S3 存储桶中。然后，您可以创建一个使用[适用于 Ruby 的 Amazon SDK](https://aws.amazon.com/documentation/sdk-for-ruby/) 来检索数据的自定义配方。有关示例，请参阅[使用适用于 Ruby 的 SDK](cookbooks-101-opsworks-s3.md)。有关更多信息，请参阅[OpsWorks 堆栈数据包参考](data-bags.md)。
+ 在 Chef 12 Linux 中，Berkshelf 不再安装在堆栈实例上。相反，建议您在本地开发计算机上使用 Berkshelf，在本地打包说明书依赖项。然后，将您的程序包 (包含依赖项) 上传到 Amazon Simple Storage Service。最后，修改您的 Chef 12 Linux 堆栈，将已上传的程序包用作说明书源。有关更多信息，请参阅 [本地打包说明书依赖项](best-practices-packaging-cookbooks-locally.md)。
+ 不再支持 EBS 卷的 RAID 配置。要提高性能，您可以使用 Amazon [Elastic Block Store (Amazon EBS) 的预配置 IOPS](https://aws.amazon.com/about-aws/whats-new/2012/07/31/announcing-provisioned-iops-for-amazon-ebs/)。
+ 不再支持 autofs。
+ 不再支持 Subversion 存储库。
+ 现在，必须使用自定义配方执行每层 OS 程序包安装。有关更多信息，请参阅 [按层程序包安装](per-layer-os-package-install.md)。

## 受支持的操作系统
<a name="chef-12-linux-supported-oses"></a>

早期版本的 Chef 所支持的 Linux 操作系统也受 Chef 12 的支持。有关 Chef 12 Linux 堆栈可使用的 Linux 操作系统类型和版本的列表，请参阅[Linux 操作系统：](workinginstances-os-linux.md)。

## 支持的实例类型
<a name="chef-12-linux-supported-instance-types"></a>

OpsWorks 堆栈支持 Chef 12 Linux 堆栈的所有实例类型，但高性能计算 (HPC) 集群计算、集群 GPU 和高内存集群实例类型等特殊实例类型除外。

## 更多信息
<a name="chef-12-linux-more-info"></a>

 要了解有关如何使用适用于 Linux 堆栈的 Chef 12 的更多信息，请参阅以下内容：
+ [入门：示例](gettingstarted-intro.md)

  通过指导你使用 OpsWorks Stacks 控制台进行简短的动手练习，创建 Node.js 应用程序环境，向你介绍 OpsWorks Stacks。
+  [入门：Linux](gettingstarted-linux.md)

  通过指导你使用 OpsWorks Stacks 控制台进行动手练习，向你介绍 OpsWorks Stacks 和 Chef 12 Linux，创建一个基本的 Chef 12 Linux 堆栈，该堆栈包含一个带有提供流量的 Node.js 应用程序的简单层。
+ [自定义层](workinglayers-custom.md)

  提供有关将包含说明书和配方的层添加到 Chef 12 Linux 堆栈的准则。您可以使用社区所提供的可用说明书和配方，也可以创建您自己的说明书和配方。
+ [移至数据包](attributes-to-data-bags.md)

  将由运行 Chef 11 及早期版本的 Chef 的 Linux 堆栈使用的实例 JSON 与由运行 Chef 12 的 Linux 堆栈使用的实例 JSON 进行比较。还提供了 Chef 12 实例 JSON 格式的参考文档的暗示。