使用自訂 AMI - AWS OpsWorks

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

使用自訂 AMI

重要

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

AWS OpsWorks Stack 支援兩種自訂執行個體的方式:自訂 Amazon 機器映像檔 (AMI) 和廚師方法。這兩種方法都可讓您控制所安裝的套件和套件版本、其設定方式,以此類推。不過,每種方法都有不同的優點,因此最好的方法取決於您的需求。

以下是考慮使用自訂 AMI 的主要原因:

  • 您想要預先綁定特定套件,而不是在啟動執行個體之後安裝它們。

  • 您想要控制套件更新的時間,以提供 layer 的一致基礎映像。

  • 您想要盡快啟動執行個體 (特別是負載類型執行個體)。

以下是考慮使用 Chef 配方的主要原因:

  • 它們比自訂 AMI 更具彈性。

  • 它們更容易更新。

  • 它們可以在執行中執行個體上執行更新。

實際上,最佳解決方案可能是這兩種方法的組合。如需配方的詳細資訊,請參閱技術指南和配方

自訂 AMI 如何與堆疊搭配使用 AWS OpsWorks

若要為您的執行個體指定自訂 AMI,請在建立新執行個體時選取 [使用自訂 AMI 做為執行個體的作業系統]。 AWS OpsWorks 然後,堆疊會在堆疊區域中顯示自訂 AMI 的清單,並從清單中選取適當的 AMI。如需詳細資訊,請參閱 將執行個體新增至 Layer

注意

您無法將特定自訂 AMI 指定為堆疊的預設作業系統。您可以將 Use custom AMI 設定為堆疊的預設作業系統,但只有在將新的執行個體新增至 layer 時才能指定特定 AMI。如需詳細資訊,請參閱 將執行個體新增至 Layer建立新的堆疊。雖然可以使用其他作業系統 (例如 CentOS 6.x) (從自訂或社群產生的 AMI 所建立) 建立執行個體,但並未正式受到支援。

本主題討論您在建立或使用自訂 AMI 之前應該考慮的一些一般問題。

啟動行為

當您啟動執行個體時, AWS OpsWorks 堆疊會使用指定的自訂 AMI 來啟動新的 Amazon EC2 執行個體。 AWS OpsWorks 然後,堆疊會使用 cloud init 在執行個體上安裝 AWS OpsWorks Stacks 代理程式,而代理程式會執行執行個體的安裝程式方法,然後再執行部署方法。執行個體上線之後,代理程式會執行堆疊中每個執行個體的設定配方 (包括新增的執行個體)。

選擇 Layer

AWS OpsWorks 堆疊代理程式通常不會與已安裝的套件衝突。但是,例證必須是至少一個圖層的成員。 AWS OpsWorks 堆棧始終運行該層的配方,這可能會導致問題。您應該確切了解 layer 的配方對執行個體所執行的作業,再將具有自訂 AMI 的執行個體新增至 layer。

若要查看特定 layer 類型在您執行個體上執行的配方,請開啟包含該 layer 的堆疊。然後按一下導覽窗格中的 Layers (Layer),然後按一下感興趣 layer 的 Recipes (配方)。若要查看實際程式碼,請按一下配方名稱。

注意

對於 Linux AMI,減少衝突可能性的一種方法是使用 AWS OpsWorks Stack 佈建和配置作為自定義 AMI 基礎的實例。如需詳細資訊,請參閱 從 AWS OpsWorks 堆疊執行個體建立自訂 Linux AMI

處理應用程式

除了套件之外,也建議您在 AMI 中包括應用程式。如果您有大型複雜應用程式,則將它包括在 AMI 中可以縮短執行個體的啟動時間。您可以在 AMI 中包含小型應用程式,但相對於讓 AWS OpsWorks Stacks 部署應用程式,通常會有很少或沒有時間優勢。

其中一個選項是將應用程式包括在 AMI 中,同時建立應用程式,以將應用程式從儲存庫部署至執行個體。這種方法可縮短開機時間,同時提供方便的方法以在執行個體執行之後更新應用程式。請注意,Chef 配方為等冪操作,因此只要儲存庫中的版本與執行個體上版本相同,部署配方就不會修改應用程式。

為 AWS OpsWorks 堆疊建立自訂 AMI

若要搭配 AWS OpsWorks 堆疊使用自訂 AMI,您必須先從自訂執行個體建立 AMI。您可以從兩個選項中進行選擇:

建立自訂 Linux AMI 之前,請在/tmp分割區noexec上停用,以允許 AWS OpsWorks 堆疊在自訂 Linux 執行個體上安裝其代理程式。

注意

請注意,AMI 可能無法使用所有執行個體類型,因此請確定您的啟動中 AMI 與您計劃使用的執行個體類型相容。具體而言,R3 執行個體類型需要硬體輔助虛擬化 (HVM) AMI。

然後,您可以使用 Amazon EC2 主控台或 API 從自訂執行個體建立自訂 AMI。將執行個體新增至 layer,並指定自訂 AMI,即可在相同區域的任何堆疊中使用自訂 AMI。如需如何建立利用自訂 AMI 之執行個體的詳細資訊,請參閱將執行個體新增至 Layer

注意

根據預設, AWS OpsWorks 堆疊會在開機時安裝所有 Amazon Linux 更新,以便為您提供最新版本。此外,Amazon Linux 大約每六個月會發行新版本,其中涉及大量變更。根據預設,當新的 Amazon Linux 版本發行時,以其為依據的自訂 AMI 會自動更新到該版本。建議作法是將自訂 AMI 鎖定為特定 Amazon Linux 版本,讓您可以將更新延遲到您測試過新版本為止。如需詳細資訊,請參閱如何將 AMI 鎖定為特定版本?

使用 Amazon EC2 創建自定義 AMI

建立自訂 AMI 的最簡單方法 (也就是 Windows AMI 的唯一選項),就是使用 Amazon EC2 主控台或 API 來執行整個任務。如需下列步驟的詳細資訊,請參閱建立自己的 AMI

若要使用 Amazon EC2 主控台或 API 建立自訂 AMI
  1. 使用其中一個 AWS OpsWorks Stacks 支援 AMI 的 64 位元版本,來建立執行個體。

  2. 從步驟 1 自訂執行個體,方法是設定執行個體、安裝套件,以此類推。請記住,會根據 AMI 以在每個執行個體上重新產生您安裝的每個項目,因此請不要包括特定執行個體特有的項目。

  3. 停止執行個體,並建立自訂 AMI。

從 AWS OpsWorks 堆疊執行個體建立自訂 Linux AMI

若要使用自訂的 AWS OpsWorks 堆疊 Linux 執行個體建立 AMI,請注意,由建立的每個 Amazon EC2 執行個體都 OpsWorks 包含一個唯一的身分。如果您從這類執行個體建立自訂 AMI,它會包含該識別,而且所有以 AMI 為基礎的執行個體都具有相同的識別。為了確保根據您自訂 AMI 的執行個體具有唯一的身分,您必須先從自訂的執行個體移除身分,再建立 AMI。

若要從 AWS OpsWorks 堆疊執行個體建立自訂 AMI
  1. 建立 Linux 堆疊,並新增一或多 layer,以定義自訂執行個體的組態。您可以使用內建 layer、適當地自訂,以及完全自訂 layer。如需詳細資訊,請參閱 自訂 AWS OpsWorks 堆疊

  2. 編輯圖層並停用 AutoHealing。

  3. 新增具有您慣用 Linux 發行版本的執行個體至一或多 layer,並啟動它。我們建議使用 Amazon EBS 支援的執行個體。開啟執行個體的詳細資訊頁面,並記錄其 Amazon EC2 ID 以供日後使用。

  4. 執行個體上線時,請使用 SSH 登入,並根據執行個體作業系統執行接下來四個步驟之一。

  5. 對於 Chef 11 或 Chef 12 堆疊中的 Amazon Linux 執行個體,或 Chef 11 堆疊中的 Red Hat Enterprise Linux 7 執行個體,執行下列動作。

    1. sudo /etc/init.d/monit stop

    2. sudo /etc/init.d/opsworks-agent stop

    3. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /etc/chef

      注意

      對於 Chef 12 堆疊中的執行個體,請將下列兩個資料夾新增至此命令:

      • /var/chef

      • /opt/chef

    4. sudo rpm -e opsworks-agent-ruby

    5. sudo rpm -e chef

  6. 用於 Chef 12 堆疊中的 Ubuntu 16.04 LTS 或 18.04 LTS 執行個體時,請執行下列動作。

    1. sudo systemctl stop opsworks-agent

    2. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /var/chef /opt/chef /etc/chef

    3. sudo apt-get -y remove chef

    4. sudo dpkg -r opsworks-agent-ruby

    5. systemctl stop apt-daily.timer

    6. systemctl stop apt-daily-upgrade.timer

    7. rm /var/lib/systemd/timers/stamp-apt-daily.timer

    8. rm /var/lib/systemd/timers/stamp-apt-daily-upgrade.timer

  7. 如需 Chef 12 堆疊中其他支援的 Ubuntu 版本,執行下列動作。

    1. sudo /etc/init.d/monit stop

    2. sudo /etc/init.d/opsworks-agent stop

    3. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /var/chef /opt/chef /etc/chef

    4. sudo apt-get -y remove chef

    5. sudo dpkg -r opsworks-agent-ruby

  8. 對於 Chef 12 堆疊中的 Red Hat Enterprise Linux 7 執行個體,執行下列動作。

    1. sudo systemctl stop opsworks-agent

    2. sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/ /etc/chef /var/chef

    3. sudo rpm -e opsworks-agent-ruby

    4. sudo rpm -e chef

  9. 此步驟取決於執行個體類型:

    • 對於 Amazon EBS 支援的執行個體,請使用 AWS OpsWorks 堆疊主控台停止執行個體並建立 AMI,如建立 Amazon EBS 支援的 Linux AMI 中所述。

    • 對於執行個體存放區支援的執行個體,請依照建立執行個體存放區支援 Linux AMI 中所述建立 AMI,然後使用 AWS OpsWorks Stack 主控台停止執行個體。

      當您建立 AMI 時,請務必包括憑證檔案。例如,您可以在將-i引數設定為的情況下呼叫ec2-bundle-vol指令-i $(find /etc /usr /opt -name '*.pem' -o -name '*.crt' -o -name '*.gpg' | tr '\n' ',')。請不要在綁定時移除 apt 公有金鑰。預設 ec2-bundle-vol 命令會處理此任務。

  10. 返回 AWS OpsWorks Stacks 主控台並從堆疊中刪除執行個體,以清理堆疊。

建立自訂 Windows AMI

下列程序會建立適用於視窗伺服器 2022 基礎版的自訂 AMI。您可以在 Amazon EC2 管理主控台中選擇其他 Windows 伺服器作業系統。

重要

目前無法安裝 AWS OpsWorks 堆疊代理程式,而且 AWS OpsWorks 堆疊無法管理使用英文以外的系統 UI 語言的 Windows 執行個體-美國 (en-US)。

使用 Sysprep 建立自訂 Windows AMI

使用 Sysprep 建立自訂 Windows AMI 通常會導致較慢的執行個體啟動但較乾淨的程序。由於活動、重新啟動、堆疊佈建,以及第 AWS OpsWorks 一次執行的 AWS OpsWorks 堆疊 (包括設定和設定),首次啟Sysprep動使用映像檔建立的執行個體Sysprep需要更多時間。完成在 Amazon EC2 主控台中建立自訂視窗 AMI 的步驟。

使用 Sysprep 建立自訂 Windows AMI
  1. 在 Amazon EC2 主控台中,選擇啟動執行個體

  2. 找到 Microsoft 視窗伺服器 2022 基礎版,然後選擇選取

  3. 選擇您想要的執行個體類型,然後選擇 Configure Instance Details (設定執行個體詳細資訊)。變更 AMI 的組態 (包括機器名稱、儲存體和安全群組設定)。選擇啟動

  4. 執行個體啟動程序完成之後,請取得密碼,然後在 Windows Remote Desktop Connection (遠端桌面連線) 視窗中連線至執行個體。

  5. 在 Windows [開] 畫面上,選擇 [開],然後開始輸入,ec2configservice直到結果顯示 EC2 ConfigServiceSettings 主控台為止。開啟 主控台。

  6. 在 [一般] 索引標籤上,確定已填入 [啟用 UserData 執行] 核取方塊 (雖然不需要此選項Sysprep,但 AWS OpsWorks 堆疊必須安裝其代理程式)。清除 Set the computer name of the instance... (設定執行個體的電腦名稱...) 選項的核取方塊,因為此選項可能會導致 AWS OpsWorks Stacks 的重新啟動迴圈。

  7. 映像索引標籤上,將管理員密碼設定為隨機,以允許 Amazon EC2 自動產生可以使用 SSH 金鑰擷取的密碼,或指定以指定您自己的密碼。 Sysprep儲存此設定。如果您指定自己的密碼,請將密碼存放在便利的位置。建議您不要選擇 Keep Existing (保留現有)

  8. 選擇 Apply (套用),然後選擇 Shutdown with Sysprep (使用 Sysprep 關機)。出現確認提示時,選擇 Yes (是)

  9. 執行個體停止後,在 Amazon EC2 主控台中,以滑鼠右鍵按一下執行個體清單中的執行個體,選擇 [映像],然後選擇 [建立映像]。

  10. Create Image (建立映像) 頁面上,提供映像的名稱和描述,並指定磁碟區組態。完成之後,請選擇 Create Image (建立映像)

  11. 開啟 Images (映像) 頁面,並等待映像從 pending (待定) 階段變更為 available (可用)。新的 AMI 現在已可使用。

不使用 Sysprep 建立自訂 Windows AMI

完成在 Amazon EC2 主控台中建立自訂視窗 AMI 的步驟。

不使用 Sysprep 建立自訂 Windows AMI
  1. 在 Amazon EC2 主控台中,選擇啟動執行個體

  2. 找到 Microsoft 視窗伺服器 2022 基礎版,然後選擇選取

  3. 選擇您想要的執行個體類型,然後選擇 Configure Instance Details (設定執行個體詳細資訊)。變更 AMI 的組態 (包括機器名稱、儲存體和安全群組設定)。選擇啟動

  4. 執行個體啟動程序完成之後,請取得密碼,然後在 Windows Remote Desktop Connection (遠端桌面連線) 視窗中連線至執行個體。

  5. 在執行個體上,開啟 C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml,並變更下列兩種設定,然後儲存和關閉檔案:

    • Ec2SetPassword 設定為 Enabled

    • Ec2HandleUserData 設定為 Enabled

  6. 中斷與遠端桌面工作階段的連線,然後返回 Amazon EC2 主控台。

  7. Instances (執行個體) 清單中,停止執行個體。

  8. 執行個體停止後,在 Amazon EC2 主控台中,以滑鼠右鍵按一下執行個體清單中的執行個體,選擇 [映像],然後選擇 [建立映像]。

  9. Create Image (建立映像) 頁面上,提供映像的名稱和描述,並指定磁碟區組態。完成之後,請選擇 Create Image (建立映像)

  10. 開啟 Images (映像) 頁面,並等待映像從 pending (待定) 階段變更為 available (可用)。新的 AMI 現在已可使用。

使用自訂 Windows AMI 新增執行個體

在您的映像變更為 available (可用) 狀態之後,即可建立根據自訂 Windows AMI 的新執行個體。當您從 Operating system (作業系統) 清單中選擇 Use custom Windows AMI (使用自訂 Windows AMI) 時, AWS OpsWorks Stacks 會顯示自訂 AMI 清單。

新增根據自訂 Windows AMI 的執行個體
  1. 當您的新 AMI 可用時,請前往「堆 AWS OpsWorks 疊」主控台,開啟 Windows 堆疊的「執行個體」頁面,然後選擇頁面底部附近的 + 執行個體以新增執行個體。

  2. New (新增) 標籤上,選擇 Advanced (進階)

  3. Operating system (作業系統) 下拉式清單上,選擇 Use custom Windows AMI (使用自訂 Windows AMI)

  4. Custom AMI (自訂 AMI) 下拉式清單上,選擇您所建立的 AMI,然後選擇 Add Instance (新增執行個體)

您現在可以啟動並執行執行個體。