選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

從 Chef Server 遷移至 AWS OpsWorks Stacks - AWS OpsWorks

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

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

從 Chef Server 遷移至 AWS OpsWorks Stacks

重要

AWS OpsWorks Stacks 服務已於 2024 年 5 月 26 日終止,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問,請透過 AWS re:Post 或透過 AWS Premium Support 聯絡 AWS 支援 團隊。

由於 AWS OpsWorks Stacks 是以 Chef 為基礎,因此從 Chef Server 遷移到 AWS OpsWorks Stacks 相當簡單。本主題提供修改 Chef Server 程式碼以使用 AWS OpsWorks Stacks 的準則。

注意

我們不建議遷移至使用早於 Chef 11.10 版本的堆疊,因為這類版本是以 chef-solo 做為基礎,不支援搜尋或資料包。

將角色映射至 Layer

Chef Server 使用角色代表及管理具有相同用途和組態的執行個體,例如一組執行個體,其中每個執行個體都主控一個 Java 應用程式伺服器。基本上,AWS OpsWorks Stacks layer 的用途與 Chef 的角色相同。layer 是建立一組具有相同組態、已安裝套件、應用程式部署程序等 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的藍圖。

AWS OpsWorks Stacks 包含一組適用於多種應用程式伺服器的內建層、HAProxy 負載平衡器、MySQL 資料庫主控端和 Ganglia 監控主控端。例如,內建 Java App Server layer 是建立託管 Tomcat 伺服器的執行個體的藍圖。

若要遷移至 AWS OpsWorks Stacks,您需要將每個角色與提供同等功能的 layer 建立關聯。針對某些角色,您可能可以直接使用其中一個內建 layer。其他角色則可能需要不同程度的自訂。從檢查內建 layer 的功能開始 (包含與每個 layer 關聯的配方) 以查看是否有 layer 至少能提供角色的一部分功能。如需內建 layer 的詳細資訊,請參閱 AWS OpsWorks Stacks Layer 參考。若要檢查內建配方,請參閱 AWS OpsWorks Stacks 公有 GitHub 儲存庫

接下來您繼續的方式會根據您將 layer 對應到每個角色的程度而有所不同,如下所示。

內建 layer 支援角色所有的功能

您可以直接使用內建 layer,並且僅需要進行微幅的自訂 (若需要的話)。例如,如果角色支援 Tomcat 伺服器,Java App Server 層的配方可能已經處理了角色的所有任務,可能有一些適度的自訂。例如,您可以透過覆寫適當的屬性範本,讓 layer 的內建配方使用自訂 Tomcat 或 Apache 組態設定。

內建 layer 支援角色的部分 (並非全部) 功能

您可能可以將 layer 延伸來使用內建 layer。這通常會涉及實作自訂配方,以支援沒有的功能,以及將配方指派給 layer 的生命週期事件。例如,假設您的角色在與主控 Tomcat 伺服器相同的執行個體上安裝 Redis 伺服器。您可以透過實作自訂配方,在 layer 的執行個體上安裝 Redis,並將配方指派給 layer 的設定事件,來擴展 Java App Server layer 以符合角色的功能。

沒有任何內建 layer 能適當支援角色的功能

實作自訂 layer。例如,假設您的角色支援 MongoDB 資料庫伺服器,但任何內建的 layer 皆不支援該資料庫伺服器。您可以透過實作配方,安裝必要套件、設定伺服器等,並將配方指派給自訂 layer 的生命週期事件,來提供該支援。通常,針對此目的,您至少可以使用角色一部分的配方。如需如何實作自訂 layer 的詳細資訊,請參閱建立自訂 Tomcat 伺服器 Layer

使用資料包

Chef Server 允許您使用資料包將使用者定義的資料傳遞給您的配方。

  • 您會使用您的技術指南存放您的資料,Chef 會在每個執行個體上安裝它。

  • 您可以針對敏感性資料 (例如密碼) 使用加密資料包。

AWS OpsWorks Stacks 支援資料包;配方可以使用與 Chef Server 完全相同的程式碼來擷取資料。但是,支援具有下列限制和差異:

  • 僅 Chef 11.10 Linux 及更新版本的堆疊支援資料包。

    Windows 堆疊和執行更早版本的 Linux 堆疊不支援資料包。

  • 您不會將資料包存放在您的技術指南儲存庫。

    相反的,您使用自訂 JSON 管理您資料包的資料。

  • AWS OpsWorks Stacks 不支援加密的資料包。

    若您需要以加密的形式存放敏感性資料 (例如密碼或憑證),我們建議您將其存放在私有 S3 儲存貯體。然後,您可以建立自訂配方,定義其使用適用於 Ruby 的 Amazon 開發套件擷取資料。如需範例,請參閱「使用適用於 Ruby 的 SDK」。

如需詳細資訊,請參閱使用資料包

Chef Server 會將堆疊組態資訊 (例如 IP 地址和角色組態) 存放在伺服器上。配方使用 Chef 搜尋擷取此資料。 AWS OpsWorks Stacks 使用稍微不同的方法。例如,Chef 11.10 Linux 堆疊是基於 Chef 用戶端的本機模式,即一種在執行個體上本機執行輕量版本 Chef Server (通常稱為 Chef Zero) 的 Chef 用戶端選項。Chef Zero 支援針對存放在執行個體節點物件中的資料進行搜尋。

AWS OpsWorks Stacks 不會將堆疊資料存放在遠端伺服器上,而是為每個生命週期事件將一組堆疊組態和部署屬性新增至每個執行個體的節點物件。這些屬性代表堆疊組態的快照。他們使用與 Chef Server 相同的語法,代表配方需要用來從伺服器擷取的大多數資料。

您通常不需要修改配方的 Stacks AWS OpsWorks 搜尋相依程式碼。由於 Chef 搜尋在節點物件上運作,其中包含堆疊組態和部署屬性,因此 Stacks AWS OpsWorks 中的搜尋查詢通常與 Chef Server 的運作方式完全相同。

主要例外是因為堆疊組態和部署屬性只包含 AWS OpsWorks Stacks 在執行個體上安裝屬性時所知道的資料。如果您在本機在特定執行個體上建立或修改屬性,這些變更不會傳播回 AWS OpsWorks Stacks,也不會納入安裝在其他執行個體上的堆疊組態和部署屬性。您可以使用搜尋來僅擷取該執行個體上的屬性值。如需詳細資訊,請參閱使用 Chef 搜尋

為了與 Chef Server 的相容性, AWS OpsWorks Stacks 會將一組role屬性新增至節點物件,每個物件都包含堆疊的層屬性。若您的配方使用 roles 做為搜尋鍵,您不需要變更搜尋程式碼。查詢會自動傳回對應 layer 的資料。例如,以下兩個查詢都會傳回 php-app layer 的屬性。

phpserver = search(:node, "layers:php-app").first
phpserver = search(:node, "roles:php-app").first

管理技術指南和配方

AWS OpsWorks Stacks 和 Chef Server 處理技術指南和配方的方式略有不同。Chef Server:

  • 無論是自行實作,還是使用社群技術指南,您會提供所有的技術指南。

  • 您會將技術指南存放在伺服器上。

  • 您可以手動執行技術指南,或是根據定期排程執行。

使用 AWS OpsWorks Stacks:

  • AWS OpsWorks Stacks 為每個內建層提供一或多個技術指南。這些技術指南會處理標準任務,例如安裝和設定內建 layer 的軟體和部署應用程式。

    若要處理並未由內建技術指南執行的任務,您會將自訂技術指南新增至您的堆疊,或是使用社群技術指南。

  • 您可以將 AWS OpsWorks Stacks 技術指南存放在遠端儲存庫中,例如 S3 儲存貯體或 Git 儲存庫。

    如需詳細資訊,請參閱存放技術指南

  • 您可以手動執行配方,但通常讓 AWS OpsWorks Stacks 為您執行配方,以回應在執行個體生命週期期間關鍵點發生的一組生命週期事件

    如需詳細資訊,請參閱執行配方

  • AWS OpsWorks Stacks 僅支援 Chef 11.10 堆疊上的 Berkshelf。若您使用 Berkshelf 管理您的技術指南依存性,您無法使用執行 Chef 11.4 或更早版本的堆疊。

    如需詳細資訊,請參閱使用 Berkshelf

存放技術指南

使用 Chef Server 時,您會將您的技術指南存放在伺服器上,並將他們從伺服器部署到執行個體。使用 AWS OpsWorks Stacks,您可以將技術指南存放在儲存庫中:S3 或 HTTP 封存或 Git 或 Subversion 儲存庫。您可以指定安裝技術指南時 AWS OpsWorks ,Stacks 從儲存庫下載程式碼到堆疊執行個體所需的資訊。

若要從 Chef Server 進行遷移,您必須將您的技術指南放在這些儲存庫中的其中一個。如需如何建構技術指南儲存庫的資訊,請參閱技術指南儲存庫

執行配方

在 AWS OpsWorks Stacks 中,每個 layer 都有一組生命週期事件:設定、設定、部署、取消部署和關機,這些事件都會在執行個體生命週期期間的關鍵點發生。若要執行自訂配方,您通常會將它指定給適當 layer 上的適當事件。當事件發生時, AWS OpsWorks Stacks 便會執行關聯的配方。例如,安裝事件會在執行個體完成開機之後發生,因此您通常會將執行像是安裝和設定套件,以及啟動服務等任務的配方指派給此事件。

您可以透過使用執行配方堆疊命令手動執行配方。此命令在開發和測試期間非常有用,但您也可以用它來執行不會映射到生命週期事件的配方。您也可以使用執行配方命令手動觸發安裝和設定事件。

除了 AWS OpsWorks Stacks 主控台之外,您也可以使用 AWS CLISDKs 來執行配方。這些工具支援所有 AWS OpsWorks Stacks API 動作,但通常會比使用 API 更簡單。使用 create-deployment CLI 命令觸發生命週期事件,執行所有關聯配方。您也可以使用此命令來執行一或多個配方,而不觸發事件。對等的軟體開發套件程式碼依存於特定語言,但通常與 CLI 命令相似。

以下範例說明使用 create-deployment CLI 命令自動化應用程式部署的兩種方式。

  • 透過將具有單一執行個體的自訂 layer 新增至您的堆疊,來根據定期排程部署您的應用程式。

    將自訂安裝配方新增至在執行個體上建立 cron 任務的 layer,以根據指定的排程執行命令。如需如何使用配方來建立 cron 任務的範例,請參閱在 Linux 執行個體上執行 Cron 任務

  • 將任務新增至您使用 create-deployment CLI 命令部署應用程式的連續整合管道。

使用 Chef 環境

AWS OpsWorks Stacks 不支援 Chef 環境;node.chef_environment一律傳回 _default

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。