演練:修補 Linux AMI (AWS CLI) - AWS Systems Manager

演練:修補 Linux AMI (AWS CLI)

此 AWS Systems Manager Automation 演練會示範如何使用 AWS Command Line Interface (AWS CLI) 和 Systems Manager AWS-UpdateLinuxAmi Runbook,透過您指定套件的最新版本自動修補 Linux Amazon Machine Image (AMI)。自動化是 AWS Systems Manager 的功能。AWS-UpdateLinuxAmi Runbook 也會自動化安裝其他的網站特定套件和組態。您可以使用此演練更新各種 Linux 發行版本,包括 Ubuntu、CentOS、RHEL、SLES 或 Amazon Linux AMIs。如需支援的 Linux 版本完整清單 , 請參閱 Patch Manager 先決條件

AWS-UpdateLinuxAmi Runbook 可讓您自動化映像維護任務,不必使用 JSON 或 YAML 撰寫 Runbook。您可以使用 AWS-UpdateLinuxAmi Runbook 執行以下類型的任務。

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

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

  • 安裝其他軟體套件。

開始之前

在您開始使用 Runbook 之前,請設定 Automation 的角色和 EventBridge (選用)。如需更多詳細資訊,請參閱 設定自動化。此演練也需要您指定 AWS Identity and Access Management (IAM) 執行個體描述檔的名稱。如需建立 IAM 執行個體描述檔的詳細資訊,請參閱建立 Systems Manager 的 IAM 執行個體描述檔

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

參數 類型 描述

SourceAmiId

字串

(必要) 來源 AMI ID。您可以使用 AWS Systems Manager Parameter Store 公用參數,以自動參考 Amazon EC2 AMI for Linux 的最新 ID。如需詳細資訊,請參閱使用 AWS Systems Manager Parameter Store 查詢最新的 Amazon Linux AMI ID

IamInstanceProfileName

字串

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

AutomationAssumeRole

字串

(必要) 您在 設定自動化 中建立之 IAM 服務角色的名稱。服務角色 (也稱為擔任角色) 會提供自動化許可來擔任您的 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 Elastic Compute Cloud (Amazon EC2) 使用者資料和 IAM 執行個體描述檔角色啟動執行個體。使用者資料會根據作業系統安裝合適的 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 Generated by EC2 Automation on {{global:DATE_TIME}} from {{SourceAmiId}}」,其中 DATE_TIME 和 SourceID 代表自動化變數。

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

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

輸出

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

注意

根據預設,Automation 執行 AWS-UpdateLinuxAmi Runbook 時,系統在預設 VPC (172.30.0.0/16) 中建立暫時執行個體。如果刪除預設 VPC,您會收到以下錯誤:

VPC not defined 400

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

使用 自動化 建立已修補的 AMI

  1. 如果您尚未安裝並設定 AWS Command Line Interface (AWS CLI),請進行相應的操作。

    如需相關資訊,請參閱安裝或升級 AWS 命令列工具

  2. 執行下列命令,以執行 AWS-UpdateLinuxAmi Runbook。在參數區段中,指定 AMI 來源 ID、EC2 執行個體描述檔角色及自動化服務角色。

    aws ssm start-automation-execution \ --document-name "AWS-UpdateLinuxAmi" \ --parameters \ SourceAmiId=ami-0080e4c5bc078760e, \ IamInstanceProfileName=ManagedInstanceRole, \ AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'"

    命令會傳回執行 ID。複製此 ID 到剪貼簿。您可以使用此 ID 檢視自動化的狀態。

    { "AutomationExecutionId": "ID" }
  3. 若要使用 AWS CLI 檢視自動化,請執行以下命令:

    aws ssm describe-automation-executions
  4. 執行以下命令檢視自動化進度的詳細資訊。

    aws ssm get-automation-execution --automation-execution-id ID

    更新程序可能需要 30 分鐘或以上的時間完成。

    注意

    您也可以在主控台中監控自動化的狀態。在清單中,選擇您剛執行的自動化,接著選擇 Steps (步驟) 標籤。此索引標籤會顯示自動化動作的狀態。

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

注意

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