

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 深入了解：探索本演練中使用的技術指南
<a name="gettingstarted-linux-explore-cookbook"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 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 Stacks 資料包參考](data-bags.md)。另請參閱 [Learn 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/)。