更新 Linux AMI - AWS Systems Manager

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

更新 Linux AMI

本 Systems Manager 自動化逐步解說會示範如何使用主控台或 AWS CLI AWS-UpdateLinuxAmi runbook,使用您指定的套件AMI的最新修補程式來更新 Linux。自動化是 AWS Systems Manager的功能。AWS-UpdateLinuxAmi Runbook 也會自動化安裝其他的網站特定套件和組態。你可以使用這個逐步解說來更新各種 Linux 發行版Ubuntu Server,包括 CentOS RHEL、SLES、或 Amazon Linux AMIs。如需支援的 Linux 版本完整清單,請參閱 Patch Manager 先決條件

AWS-UpdateLinuxAmirunbook 允許您自動執行映像維護任務,而無需在或中JSON編寫 runbook。YAML您可以使用 AWS-UpdateLinuxAmi Runbook 執行以下類型的任務。

  • 在 Amazon Linux、Red Hat Enterprise Linux、Ubuntu Server、SUSE Linux Enterprise Server 或 CentOS Amazon Machine Image (AMI) 上,升級所有發行版本套件和 Amazon 軟體。這是 Runbook 預設行為。

  • 安裝 AWS Systems Manager SSM Agent在現有映像上以啟用 Systems Manager 功能,例如使用執行遠端命令, AWS Systems Manager Run Command或使用詳細目錄收集軟體清查。

  • 安裝其他軟體套件。

開始之前

在您開始使用 Runbook 之前,請先設定角色,並 EventBridge 針對自動化 (選擇性) 設定角色。如需詳細資訊,請參閱設定自動化。本逐步解說也要求您指定 AWS Identity and Access Management (IAM) 執行個體設定檔的名稱。如需建立IAM執行個體設定檔的詳細資訊,請參閱設定 Systems Manager 所需的執行個體權限

AWS-UpdateLinuxAmi Runbook 接受以下的輸入參數。

參數 類型 描述

SourceAmiId

字串

(必要) 來源 AMI ID。

IamInstanceProfileName

字串

(必要) 您在「設定 Systems Manager 所需的IAM執行個體權限」中建立的執行個體設定檔角色名稱。執行個體設定檔角色可讓自動化許可在您的執行個體上執行動作,例如執行命令或啟動和停用服務。Runbook 僅使用執行個體設定檔角色的名稱。如果您指定 Amazon 資源名稱 (ARN),則自動化會失敗。

AutomationAssumeRole

字串

(必要) 您在中建立的IAM服務角色名稱設定自動化。服務角色 (也稱為假設角色) 授予 Automation 權限,讓您可以代表您擔任您的IAM角色並執行動作。例如,在 Runbook 中執行 aws:createImage 動作時,服務角色會允許自動化建立新的 AMI。對於這個參數,ARN必須指定完整的。

TargetAmiName

字串

(選用) 建立後的新 AMI 之名稱。預設名稱為系統產生的字串,包括來源 AMI ID,以及建立時間和日期。

InstanceType

字串

(選用) 做為工作空間主機啟動的執行個體類型。執行個體類型因區域而異。預設類型為 t2.micro。

PreUpdateScript

字串

(選擇性) 要在套用更新之前執行URL的指令碼。預設 (\"none\") 為不執行指令碼。

PostUpdateScript

字串

(選擇性) 要在套用套件更新之後執行URL的指令碼。預設 (\"none\") 為不執行指令碼。

IncludePackages

字串

(選用) 僅更新這些具名的套件。根據預設 (\"all\"),會套用所有可用的更新。

ExcludePackages

字串

(選用) 在各種條件下,要保留不更新的套件之名稱。根據預設 (\"none\"),無排除套件。

自動化步驟

依預設,AWS-UpdateLinuxAmi Runbook 包含下列自動化動作。

步驟 1: launchInstance (aws:runInstances動作)

此步驟會使用 Amazon 彈性運算雲端 (AmazonEC2) 使用者資料和IAM執行個體設定檔角色來啟動執行個體。Userdata 會根據作業系統安裝合適的 SSM Agent 代理程式。安裝 SSM Agent 可讓您利用 Systems Manager 功能,例如 Run Command、State Manager 和庫存。

步驟 2: updateOSSoftware (aws:runCommand動作)

此步驟會在啟動的執行個體上執行以下命令:

  • 從 Amazon Simple Storage Service (Amazon S3) 下載更新指令碼。

  • 執行選用的更新前指令碼。

  • 更新軟體發佈套件和 Amazon 軟體。

  • 執行選用的更新後指令碼。

執行日誌存放於 /tmp 資料夾以供使用者日後檢視。

如果您想要升級一組特定的套件,您可以使用 IncludePackages 參數提供清單。提供後,系統會嘗試僅更新這些套件及其相依性。其他更新不會執行。根據預設,未指定包含套件時,程式會更新所有可用的套件。

如果您想要排除升級一組特定的套件,您可以使用 ExcludePackages 參數提供清單。若提供,這些套件會維持在目前的版本,獨立於指定的其他任何選項。根據預設,未指定排除套件時,就不會排除任何套件。

步驟 3: stopInstance (aws:changeInstanceState動作)

此步驟會停止更新的執行個體。

步驟 4: createImage (aws:createImage動作)

此步驟會以連結至來源 ID 和建立時間的描述性名稱建立新的 AMI。例如:「AMI由 {{}} 的 {{全局:DATE_TIME} 上的EC2自動化生成」,其中 DATE _ TIME 和 SourceID 代表自動化變量。SourceAmiId

步驟 5: terminateInstance (aws:changeInstanceState動作)

此步驟會藉由終止執行中的執行個體來清除自動化。

輸出

自動化會傳回新的 AMI ID 作為輸出。

注意

依預設,當自動化執行AWS-UpdateLinuxAmi執行手冊時,系統會在預設值中建立暫存執行個體 VPC (172.30.0.0/16)。如果您刪除了預設值VPC,將會收到下列錯誤訊息:

VPC not defined 400

若要解決此問題,您必須複製 AWS-UpdateLinuxAmi Runbook 並指定子網路 ID。如需詳細資訊,請參閱VPC 未定義 400

使用 Automation (AWS Systems Manager) 建立已修補的 AMI
  1. 在開啟 AWS Systems Manager 主控台https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Automation (自動化)。

  3. 選擇 Execute automation (執行自動化)

  4. Automation document (自動化文件) 清單中,選擇 AWS-UpdateLinuxAmi

  5. Document details (文件詳細資訊) 部分,確認 Document version (文件版本) 設為 Default version at runtime (執行時間的預設版本)

  6. 選擇 Next (下一步)

  7. Execution Mode (執行模式) 部分,選擇 Simple execution (簡易執行)

  8. Input parameters (輸入參數) 部分,輸入您在 Before You Begin (開始之前) 部分收集的資訊。

  9. 選擇 Execute (執行)。主控台會顯示自動化執行的狀態。

自動化結束後,從已更新的 AMI 啟動測試執行個體以確認變更。

注意

如果自動化中有任何步驟失敗,關於失敗的資訊會列於 Automation Executions (自動化執行清單) 頁面。自動化設計為在成功完成所有任務後終止暫時執行個體。如果有步驟失敗,系統可能不會終止執行個體。所以如果有步驟失敗,請手動終止暫時執行個體。