

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

# 技術指南 101
<a name="cookbooks-101"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

生產層級 OpsWorks 的 Stacks 堆疊通常需要一些[自訂](customizing.md)，這通常表示使用一或多個配方、屬性檔案或範本檔案實作自訂 Chef 技術指南。本主題是實作 Stacks OpsWorks 技術指南的教學簡介。

如需 Stacks OpsWorks 如何使用技術指南的詳細資訊，其中包括技術指南的簡短一般簡介，請參閱 [技術指南和配方](workingcookbook.md)。如需如何實作和測試 Chef 配方的額外資訊，請參閱 [Test-Driven Infrastructure with Chef, 2nd Edition](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 使用。
+ [實作 Stacks OpsWorks 的技術指南](cookbooks-101-opsworks.md) 說明如何實作 Stacks 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 或 Red Hat Enterprise 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 系統。若您的系統上還沒有 VirtualBox，Vagrant 演練提供了安裝說明。請注意，您可以在 VirtualBox 上執行 Ubuntu 型環境，但 Amazon Linux 僅適用於 Amazon EC2 執行個體。但是，您可以在 VirtualBox 上執行相似的作業系統 (例如 CentOS)，這對初始開發和測試來說非常有用。

如需其他提供者的資訊，請參閱 [Vagrant](http://docs.vagrantup.com/v2/) 文件。特別是，`vagrant-aws`外掛程式提供者可讓您將 Vagrant 與 Amazon EC2 執行個體搭配使用。此提供者在 Amazon Linux 上測試配方特別有用，僅適用於 Amazon EC2 執行個體。`vagrant-aws` 提供者是免費的，但您必須擁有 AWS 帳戶並為您使用的任何 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 測試您的配方。