本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本機封裝技術指南依存性
重要
該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post
您可以使用 Berkshelf 在本機封裝食譜相依性、將套件上傳到 Amazon S3,然後修改堆疊以使用 Amazon S3 上的套件做為食譜來源。傳遞至 Amazon S3 儲存貯體的內容可能包含客戶內容。如需移除敏感資料的詳細資訊,請參閱如何清空 S3 儲存貯體?或如何刪除 S3 儲存貯體?。
下列逐步解說說明如何將食譜及其相依性預先封裝至 .zip 檔案,然後使用 .zip 檔案做為 Stacks 中 Linux 執行個體的食譜來源。 AWS OpsWorks 第一個演練說明如何封裝單一技術指南。第二個演練說明如何封裝多個技術指南。
在開始之前,請先安裝 Chef Development Kitchef
命令列工具。
在 Chef 12 中本機封裝依存性
在 Chef 12 Linux 中,根據預設,Berkshelf 不會再安裝到堆疊執行個體。我們建議您在本機開發電腦上安裝及使用 Berkshelf,以在本機封裝您的技術指南相依性。將包含相依性的套件上傳到 Amazon S3。最後,修改您的 Chef 12 Linux 堆疊,使其使用上傳的套件做為技術指南來源。請在於 Chef 12 中封裝技術指南時注意下列差異。
-
在本機電腦上,透過執行
chef
命令列工具建立技術指南。chef generate cookbook "server-app"
此命令會建立技術指南、一個 Berksfile、一個
metadata.rb
檔案和配方目錄,並將他們置放在一個具有和技術指南相同名稱的資料夾中。以下範例顯示建立項目的結構。server-app <-- the cookbook you've just created └── Berksfile ├── metadata.rb └── recipes
-
在文字編輯器中,編輯 Berksfile,使其指向
server-app
技術指南依存的技術指南。在我們的範例中,我們希望server-app
依存於來自 Chef Supermarket 的java
技術指南。我們會指定版本 1.50.0 或更新的 minor (次要) 版本,但您可以在單引號中輸入任何發佈的版本。儲存您的變更並結束檔案。 source 'https://supermarket.chef.io' cookbook 'java', '~> 1.50.0'
-
編輯
metadata.rb
檔案來新增依存性。儲存您的變更並結束檔案。depends 'java' , '~> 1.50.0'
-
變更為 Chef 為您建立的
server-app
技術指南目錄,然後執行package
命令建立技術指南的tar
檔案。若您要封裝多個技術指南,建議您在所有技術指南存放的根目錄中執行此命令。若要封裝單一技術指南,請在技術指南目錄層級執行此命令。在此範例中,我們會在server-app
目錄執行此命令。berks package cookbooks.tar.gz
輸出結果與以下內容相似。
tar.gz
檔案會在您的本機目錄內建立。Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
-
在中 AWS CLI,將您剛建立的套件上傳到 Amazon S3。在您上傳至 S3 後記下技術指南套件的新 URL,您在堆疊設定中將需要此 URL。
aws s3 cp cookbooks.tar.gz s3://
bucket-name
/輸出結果與以下內容相似。
upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
-
在「堆 AWS OpsWorks 疊」中,修改堆疊,使用您上傳的套件做為食譜來源。
-
將 Use custom Chef cookbooks (使用自訂 Chef 技術指南) 設定設為 Yes (是)。
-
將 Repository type (儲存庫類型) 設定為 S3 Archive (S3 封存)。
-
在 Repository URL (儲存庫 URL) 中,貼上您在步驟 5 中上傳之技術指南套件的 URL。
儲存您的堆疊變更。
-
本機封裝單一技術指南依存性
-
在本機電腦上,透過使用 chef 命令列工具建立技術指南:
chef generate cookbook "server-app"
此命令會建立技術指南及一個 Berksfile,並將他們置放在一個具有和技術指南相同名稱的資料夾中。
-
變更為 Chef 為您建立的技術指南目錄,然後透過執行下列命令封裝所有項目:
berks package cookbooks.tar.gz
輸出如下:
Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
-
在中 AWS CLI,將您剛建立的套件上傳到 Amazon S3:
aws s3 cp cookbooks.tar.gz s3://bucket-name/
輸出如下:
upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
-
在「堆 AWS OpsWorks 疊」中,修改堆疊,使用您上傳的套件做為食譜來源。
本機封裝多個技術指南依存性
此範例會建立兩個技術指南,並為他們封裝依存性。
-
在本機電腦上,執行下列
chef
命令以產生兩個技術指南:chef generate cookbook "server-app" chef generate cookbook "server-utils"
在此範例中,server-app 技術指南會執行 Java 組態,因此我們需要新增 Java 的依存性。
-
編輯
server-app/metadata.rb
以在社群 Java 技術指南上新增依存性:maintainer "The Authors" maintainer_email "you@example.com" license "all_rights" description "Installs/Configures server-app" long_description "Installs/Configures server-app" version "0.1.0" depends "java"
-
透過編輯技術指南根目錄中的 Berksfile 檔案,告知 Berkshelf 要封裝的內容為何,如下所示:
source "https://supermarket.chef.io" cookbook "server-app", path: "./server-app" cookbook "server-utils", path: "./server-utils"
您的檔案結構現在看起來應該會像是這樣:
.. └── Berksfile ├── server-app └── server-utils
-
最後,建立一個 zip 套件,將其上傳到 Amazon S3,然後修改您的 AWS OpsWorks Stack 堆疊以使用新的食譜來源。若要執行此作業,請遵循本機封裝單一技術指南依存性中的步驟 2 到 4。
其他資源
如需封裝技術指南依存性的詳細資訊,請參閱下列項目。
-
Linux 廚師 12 與伯克架在論壇
上 AWS OpsWorks -
伯克架在廚師 12 在論壇
上 AWS OpsWorks -
本指南中的安裝自訂技術指南
-
本指南中的技術指南儲存庫