

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

# 了解更多：探索本演练中用到的说明书
<a name="gettingstarted-linux-explore-cookbook"></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 在演练中使用的食谱。

*说明书* 是一个 Chef 概念。说明书是一些存档文件，其中包含配置信息，如配方、属性值、文件、模板、库、定义和自定义资源。*配方* 也是一个 Chef 概念。配方是一些说明，用 Ruby 语言语法编写，指定要使用的资源和应用这些资源的顺序。有关更多信息，请转至[了解 Chef](https://docs.chef.io/cookbooks.html) 网站上的[关于说明书](https://docs.chef.io/recipes.html)和[关于配方](https://learn.chef.io/)。

要查看本演练中使用的食谱内容，请[opsworks-linux-demo-cookbooks将-nodejs.tar.gz](https://s3.amazonaws.com/opsworks-demo-assets/opsworks-linux-demo-cookbooks-nodejs.tar.gz) 文件的内容解压缩到本地工作站上的空目录中。(您也可以登录到部署了说明书的实例并浏览 `/var/chef/cookbooks` 目录的内容。)

`cookbooks/nodejs_demo/recipes` 目录中的 `default.rb` 文件是说明书运行其代码的位置：

```
app = search(:aws_opsworks_app).first
app_path = "/srv/#{app['shortname']}"

package "git" do
  options "--force-yes" if node["platform"] == "ubuntu" && node["platform_version"] == "18.04"
end

application app_path do
  javascript "4"
  environment.update("PORT" => "80")

  git app_path do
    repository app["app_source"]["url"]
    revision app["app_source"]["revision"]
  end

  link "#{app_path}/server.js" do
    to "#{app_path}/index.js"
  end

  npm_install
  npm_start
end
```

下面是该文件执行的操作：
+ `search(:aws_opsworks_app).first` 使用 Chef 搜索来查找最终将被部署到实例的应用程序的信息。这些信息包括如应用程序的短名及其源存储库详细信息等设置。由于本演练中只部署了一个应用程序，所以 Chef 搜索从实例上 `aws_opsworks_app` 搜索索引内的第一个信息项获得这些设置。每当实例启动时， OpsWorks Stacks 都会将这些信息和其他相关信息作为一组数据袋存储在实例本身上，然后您可以通过 Chef 搜索获得数据包中的内容。尽管您可以将这些设置硬编码到此配方中，但使用数据包和 Chef 仍不失为一种更可靠的方式。有关数据包的更多信息，请参阅 [OpsWorks 堆栈数据包参考](data-bags.md)。另请参阅[了解 Chef](https://learn.chef.io/) 网站上的[关于数据包](https://docs.chef.io/data_bags.html)。有关 Chef 搜索的更多信息，请转至[了解 Chef](https://docs.chef.io/chef_search.html) 网站上的[关于搜索](https://learn.chef.io/)。
+ `package` 资源将 Git 安装在实例上。
+ `application` 资源描述和部署 Web 应用程序：
  + `javascript`是要安装的 JavaScript 运行时版本。
  + `environment` 设置环境变量。
  + `git` 从指定存储库和分支获取源代码。
  + `app_path` 是要将存储库克隆到的目标路径。如果实例上不存在该路径，则 OpsWorks Stacks 会创建该路径。
  + `link` 创建一个符号链接。
  + `npm_install` 安装 Node Package Manager，这是 Node.js 的默认软件包管理器。
  + `npm_start` 运行 Node.js。

尽管 OpsWorks Stacks 创建了用于本演练的食谱，但你可以创建自己的食谱。要了解如何操作，请参阅[入门：说明书](gettingstarted-cookbooks.md)。另外，您也可以转至[了解 Chef](https://docs.chef.io/cookbooks.html) 网站上的[关于说明书](https://docs.chef.io/recipes.html)、[关于配方](https://learn.chef.io/modules/learn-the-basics/ubuntu#/)和[了解 Ubuntu 上的 Chef 基础](https://learn.chef.io/)，以及 [Chef 入门](http://gettingstartedwithchef.com/first-steps-with-chef.html)网站上[使用 Chef 的第一步](http://gettingstartedwithchef.com/)中“我们的第一个 Chef 说明书”一节。