

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

# 说明书 101
<a name="cookbooks-101"></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 支持 团队联系。

生产级 OpsWorks Stacks 堆栈通常需要一些[自定义](customizing.md)，这通常意味着使用一个或多个食谱、属性文件或模板文件来实现自定义 Chef 食谱。本主题是实现 OpsWorks 堆栈食谱的教程介绍。

有关 OpsWorks Stacks 如何使用食谱的更多信息（包括对食谱的简要介绍），请参阅。[说明书和诀窍](workingcookbook.md)有关如何实施和测试 Chef 配方的更多信息，请参阅[使用 Chef 的测试驱动型基础设施，第 2 版](https://www.amazon.com/Test-Driven-Infrastructure-Chef-Behavior-Driven-Development/dp/1449372201/ref=sr_1_fkmr0_1?ie=UTF8&qid=1405556803&sr=8-1-fkmr0&keywords=Test-Driven+Infrastructure+with+Chef%2C+2nd+Edition)。

该教程示例分为两个部分：
+  [说明书基础知识](cookbooks-101-basics.md) 是一组演练示例，面向不熟悉 Chef 的用户；有经验的 Chef 用户可以跳过此部分。

  该示例向您演示如何实施说明书来执行常见任务的基础知识，例如安装软件包或者创建目录。为了简化该过程，您将使用两个非常有用的工具 [Vagrant](http://docs.vagrantup.com/v2/) 和 [Test Kitchen](http://kitchen.ci/)，以在虚拟机中本地运行大部分示例。在开始[说明书基础知识](cookbooks-101-basics.md)之前，您应先阅读[Vagrant 和 Test Kitchen](#cookbooks-101-tools) 以了解如何安装和使用这些工具。由于 Test Kitchen 尚不支持 Windows，这些示例均面向 Linux，并带有备注来说明如何调整以用于 Windows。
+ [实现堆栈食谱 OpsWorks](cookbooks-101-opsworks.md)介绍如何实现 OpsWorks 堆栈配方，包括 Windows 堆栈。

  它还包含一些更高级的主题，例如如何使用 Berkshelf 来管理外部说明书。这些示例面向新 Chef 用户编写，与 [说明书基础知识](cookbooks-101-basics.md) 中的示例非常类似。但是 OpsWorks Stacks 的工作方式与 Chef 服务器略有不同，因此我们建议有经验的 Chef 用户至少通读本节。



## Vagrant 和 Test Kitchen
<a name="cookbooks-101-tools"></a>

如果您在使用针对 Linux 实例的说明书，在学习和启动开发与测试时，Vagrant 和 Test Kitchen 是非常有用的工具。本主题提供了 Vagrant 和 Test Kitchen 的简要说明，并指向安装说明和演练，帮助您设置和熟悉如何使用这些工具的基本知识。由于 Vagrant 支持 Windows 而 Test Kitchen 不支持，因此只提供了这些工具的 Linux 示例。



### Vagrant
<a name="cookbooks-101-tools-vagrant"></a>

[Vagrant](http://docs.vagrantup.com/v2/) 为在虚拟机上执行和测试代码提供了一致的环境。它支持广泛的环境 (称为 Vagrant 盒子)，每个盒子表示一个配置的操作系统。对于 OpsWorks Stacks，感兴趣的环境基于 Ubuntu、Amazon 或红帽企业 Linux (RHEL) 发行版，因此示例主要使用名为 Vagrant 的盒子。`opscode-ubuntu-12.04`

Vagrant 可用于 Linux、Windows 和 Macintosh 系统，因此，您可以使用偏好的工作站在任何受支持的操作系统上实施和测试配方。本章的示例在 Ubuntu Linux 系统上创建，不过可以直接转换为适用于 Windows 或 Macintosh 系统的过程。

Vagrant 本质上是面向虚拟提供程序的包装器。大多数示例都使用[VirtualBox](https://www.virtualbox.org/)提供程序。 VirtualBox 是免费的，适用于 Linux、Windows 和 Macintosh 系统。如果您的系统上还没有安装说明，Vagrant 演练会提供安装说明。 VirtualBox 请注意，您可以在上运行基于 Ubuntu 的环境， VirtualBox但是 Amazon Linux 仅适用于亚马逊实例。 EC2 但是，你可以在上面运行类似的操作系统，比如 CentOS VirtualBox，这对于初始开发和测试很有用。

有关其他提供程序的信息，请参阅 [Vagrant](http://docs.vagrantup.com/v2/) 文档。特别是，`vagrant-aws`插件提供商允许您将Vagrant与亚马逊 EC2 实例一起使用。该提供程序对于在 Amazon Linux 上测试配方特别有用，该提供程序仅在亚马逊 EC2 实例上可用。`vagrant-aws` 提供程序免费，不过您必须拥有 Amazon Web Services account 并且必须为使用的任何 AWS 资源付费。

此时，您应该通读 Vagrant 的[入门演练](http://docs.vagrantup.com/v2/getting-started/index.html)，其中介绍了如何在工作站上安装 Vagrant 以及如何使用 Vagrant 的基础知识。请注意，本章中的示例不使用 Git 存储库，如果您希望，可以忽略掉演练中的这一部分。

### Test Kitchen
<a name="cookbooks-101-tools-test-kitchen"></a>

[Test Kitchen](http://kitchen.ci/) 简化了在 Vagrant 上执行和测试您的说明书的过程。在实际应用中，您几乎不需要直接使用 Vagrant。Test Kitchen 执行了大部分最常见任务，包括：
+ 在 Vagrant 中启动实例。
+ 将说明书传输到实例。
+ 在实例上运行说明书的配方。
+ 在实例上测试说明书的配方。
+ 使用 SSH 登录到实例。

我们建议不要直接安装 Test Kitchen Gem，而是安装 [Chef DK](https://www.chef.io/downloads)。除了 Chef 本身，这个软件包还包括 Test [Kitchen、Berkshelf](http://berkshelf.com/) 和其他几个有用的工具。[ChefSpec](https://docs.chef.io/chefspec.html)

此时，您应该通读 Test Kitchen 的[入门演练](http://kitchen.ci/)，其中介绍了如何使用 Test Kitchen 来执行和测试配方的基础知识。

**注意**  
本章中的示例将 Test Kitchen 用作运行配方的便利方式。如果您愿意，您可在完成“手动验证”部分之后停止入门演练，这一部分介绍了您所需了解的全部示例信息。不过，Test Kitchen 基本上是一个支持 [Bash 自动测试系统 (BATS)](https://github.com/sstephenson/bats) 等测试框架的测试平台。您应抽空完成剩余的演练以了解如何使用 Test Kitchen 来测试配方。