

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

# 將現有 Linux 堆疊遷移至新的 Chef 版本
<a name="workingcookbook-chef11-migrate"></a>

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

您可以使用 OpsWorks Stacks 主控台、API 或 CLI 將 Linux 堆疊遷移至較新的 Chef 版本。但是，您的配方可能需要修改，才能和更新的版本相容。在準備遷移堆疊時，請考慮以下事項。
+ 您無法透過編輯或複製堆疊，將 OpsWorks Stacks 堆疊版本從 Chef 11 變更為 Chef 12。Chef 主要版本的升級無法透過本節中的程序執行。如需從 Chef 11.10 轉換至 Chef 12 的詳細資訊，請參閱[實作配方：Chef 12](workingcookbook-chef12-linux.md)。
+ 從一個版本的 Chef 轉換至另一個版本，會涉及幾項變更，其中也有一些重大變更。

  如需從 Chef 0.9 轉換至 Chef 11.4 的詳細資訊，請參閱[遷移至新的 Chef 版本](#workingcookbook-chef11-migrate)。如需從 Chef 11.4 轉換至 Chef 11.10 的詳細資訊，請參閱[實作配方：Chef 11.10](workingcookbook-chef11-10.md)。如需從 Chef 11.10 轉換至 Chef 12 的詳細資訊，請參閱[實作配方：Chef 12](workingcookbook-chef12-linux.md)。
+ Chef 執行在 Chef 0.9 和 Chef 11.4 堆疊 (Ruby 1.8.7)、Chef 11.10 堆疊 (Ruby 2.0.0)，以及 Chef 12 堆疊 (Ruby 2.1.6) 上皆使用了不同的 Ruby 版本。

  如需詳細資訊，請參閱[Ruby 版本](workingcookbook-ruby.md)。
+ Chef 11.10 堆疊處理技術指南安裝的方式與 Chef 0.9 或 Chef 11.4 堆疊不同。

  這項差異可能會導致在遷移使用自訂技術指南的堆疊至 Chef 11.10 時發生問題。如需詳細資訊，請參閱[技術指南安裝與優先順序](workingcookbook-chef11-10.md#workingcookbook-chef11-10-override)。

 以下是將 Chef 堆疊遷移至更新 Chef 版本的建議準則：

**將堆疊遷移至更新的 Chef 版本**

1. [複製您的生產堆疊](workingstacks-cloning.md)。在 **Clone Stack (複製堆疊)** 頁面上，按一下 **Advanced>> (進階>>)** 以顯示 **Configuration Management (組態管理)** 區段，然後將 **Chef version (Chef 版本)** 變更至下一個更高的版本。
**注意**  
若您是使用 Chef 0.9 堆疊開始的，您無法直接升級至 Chef 11.10。您必須先升級到 Chef 11.4。若您希望在測試您的配方前先將您的堆疊遷移至 Chef 11.10，請等待 20 分鐘讓更新執行，再將堆疊從 11.4 升級到 11.10。

1. 將執行個體新增到 layer，然後在測試或預備系統上測試複製堆疊的應用程式和技術指南。如需詳細資訊，請參閱 [All about Chef ...](https://docs.chef.io/index.html)。

1. 當您滿意測試結果時，請執行下列其中一項作業：
   + 若這是您需要的 Chef 版本，您可以直接使用複製堆疊做為您的生產堆疊，或在您的生產堆疊上重設 Chef 版本。
   + 若您正在兩階段式的將 Chef 0.9 堆疊遷移至 Chef 11.10，請重複程序，將堆疊從 Chef 11.4 遷移至 Chef 11.10。

**注意**  
當您在測試配方時，您可以[使用 SSH 連線到](workinginstances-ssh.md)執行個體，然後使用[執行個體代理程式 CLI](agent.md) [run\$1command](agent-run.md) 命令，來執行與各種生命週期事件關聯的配方。代理程式 CLI 在測試安裝配方時特別有用，因為即使安裝失敗，執行個體並未達到線上狀態，您也可以使用它。您也可以使用[安裝堆疊命令](workingstacks-commands.md)來重新執行安裝配方，但該命令只有在安裝成功且執行個體處於線上狀態時，才能使用。

您也可以將執行中的堆疊更新至新的 Chef 版本。

**將執行中的堆疊更新至新的 Chef 版本**

1. [編輯堆疊](workingstacks-edit.md)，變更 **Chef version (Chef 版本)** 堆疊設定。

1. 儲存新設定並等待 OpsWorks Stacks 更新執行個體，這通常需要 15 - 20 分鐘。

**重要**  
OpsWorks Stacks 不會同步 Chef 版本更新與生命週期事件。若您希望在生產堆疊上更新 Chef 版本，您必須小心，確保更新在下一次的[生命週期事件](workingcookbook-events.md)發生前完成。如果事件發生，通常是部署或設定事件，執行個體代理程式會更新您的自訂技術指南，並執行事件的指派配方，無論版本更新是否完成。沒有直接的方式能判斷版本更新是否已完成，但部署日誌中會包含 Chef 版本。