本機封裝技術指南依存性 - AWS OpsWorks

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

本機封裝技術指南依存性

重要

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

您可以使用 Berkshelf 在本機封裝食譜相依性、將套件上傳到 Amazon S3,然後修改堆疊以使用 Amazon S3 上的套件做為食譜來源。傳遞至 Amazon S3 儲存貯體的內容可能包含客戶內容。如需移除敏感資料的詳細資訊,請參閱如何清空 S3 儲存貯體?如何刪除 S3 儲存貯體?

下列逐步解說說明如何將食譜及其相依性預先封裝至 .zip 檔案,然後使用 .zip 檔案做為 Stacks 中 Linux 執行個體的食譜來源。 AWS OpsWorks 第一個演練說明如何封裝單一技術指南。第二個演練說明如何封裝多個技術指南。

在開始之前,請先安裝 Chef Development Kit (又稱為 Chef DK),此為由 Chef 社群建置的各種工具。您需要此項目才能使用 chef 命令列工具。

在 Chef 12 中本機封裝依存性

在 Chef 12 Linux 中,根據預設,Berkshelf 不會再安裝到堆疊執行個體。我們建議您在本機開發電腦上安裝及使用 Berkshelf,以在本機封裝您的技術指南相依性。將包含相依性的套件上傳到 Amazon S3。最後,修改您的 Chef 12 Linux 堆疊,使其使用上傳的套件做為技術指南來源。請在於 Chef 12 中封裝技術指南時注意下列差異。

  1. 在本機電腦上,透過執行 chef 命令列工具建立技術指南。

    chef generate cookbook "server-app"

    此命令會建立技術指南、一個 Berksfile、一個 metadata.rb 檔案和配方目錄,並將他們置放在一個具有和技術指南相同名稱的資料夾中。以下範例顯示建立項目的結構。

    server-app <-- the cookbook you've just created └── Berksfile ├── metadata.rb └── recipes
  2. 在文字編輯器中,編輯 Berksfile,使其指向 server-app 技術指南依存的技術指南。在我們的範例中,我們希望 server-app 依存於來自 Chef Supermarket 的 java 技術指南。我們會指定版本 1.50.0 或更新的 minor (次要) 版本,但您可以在單引號中輸入任何發佈的版本。儲存您的變更並結束檔案。

    source 'https://supermarket.chef.io' cookbook 'java', '~> 1.50.0'
  3. 編輯 metadata.rb 檔案來新增依存性。儲存您的變更並結束檔案。

    depends 'java' , '~> 1.50.0'
  4. 變更為 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
  5. 在中 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
  6. 在「堆 AWS OpsWorks 疊」中,修改堆疊,使用您上傳的套件做為食譜來源。

    1. Use custom Chef cookbooks (使用自訂 Chef 技術指南) 設定設為 Yes (是)

    2. Repository type (儲存庫類型) 設定為 S3 Archive (S3 封存)

    3. Repository URL (儲存庫 URL) 中,貼上您在步驟 5 中上傳之技術指南套件的 URL。

    儲存您的堆疊變更。

本機封裝單一技術指南依存性

  1. 在本機電腦上,透過使用 chef 命令列工具建立技術指南:

    chef generate cookbook "server-app"

    此命令會建立技術指南及一個 Berksfile,並將他們置放在一個具有和技術指南相同名稱的資料夾中。

  2. 變更為 Chef 為您建立的技術指南目錄,然後透過執行下列命令封裝所有項目:

    berks package cookbooks.tar.gz

    輸出如下:

    Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
  3. 在中 AWS CLI,將您剛建立的套件上傳到 Amazon S3:

    aws s3 cp cookbooks.tar.gz s3://bucket-name/

    輸出如下:

    upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
  4. 在「堆 AWS OpsWorks 疊」中,修改堆疊,使用您上傳的套件做為食譜來源。

本機封裝多個技術指南依存性

此範例會建立兩個技術指南,並為他們封裝依存性。

  1. 在本機電腦上,執行下列 chef 命令以產生兩個技術指南:

    chef generate cookbook "server-app" chef generate cookbook "server-utils"

    在此範例中,server-app 技術指南會執行 Java 組態,因此我們需要新增 Java 的依存性。

  2. 編輯 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"
  3. 透過編輯技術指南根目錄中的 Berksfile 檔案,告知 Berkshelf 要封裝的內容為何,如下所示:

    source "https://supermarket.chef.io" cookbook "server-app", path: "./server-app" cookbook "server-utils", path: "./server-utils"

    您的檔案結構現在看起來應該會像是這樣:

    .. └── Berksfile ├── server-app └── server-utils
  4. 最後,建立一個 zip 套件,將其上傳到 Amazon S3,然後修改您的 AWS OpsWorks Stack 堆疊以使用新的食譜來源。若要執行此作業,請遵循本機封裝單一技術指南依存性中的步驟 2 到 4。

其他資源

如需封裝技術指南依存性的詳細資訊,請參閱下列項目。