View a markdown version of this page

AWSSupport-CloneXenEC2InstanceAndMigrateToNitro - AWS Systems Manager Automation Runbook 參考

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

AWSSupport-CloneXenEC2InstanceAndMigrateToNitro

Description

AWSSupport-CloneXenEC2InstanceAndMigrateToNitro Runbook 複製、準備和遷移複製的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體,目前正在 Amazon EC2 Xen 平台上執行,以在 Amazon EC2 Nitro 平台上執行。此自動化分為三個不同的分支:

  • 初步檢查:評估繼續進行遷移的所有先決條件,包括檢查目標 Amazon EC2 執行個體是否已在 Nitro 平台上執行、判斷生命週期狀態、驗證作業系統,以及驗證 Systems Manager 連線。

  • 測試:AMI從目標 Amazon EC2 執行個體建立測試,並啟動測試 Amazon EC2 執行個體,以在繼續之前驗證遷移程序。

  • CloneAndMigrate:建立目標 Amazon EC2 執行個體的複製、安裝必要的驅動程式、設定 Nitro 平台的系統,以及將執行個體類型變更為所需的 Nitro 類型。

重要

在提供停止目標 Amazon EC2 執行個體的核准之前,請確定在執行個體上執行的所有應用程式都已正常關閉。如果 Amazon EC2 執行個體沒有相關聯的彈性 IP 地址,則執行個體停止和啟動後,自動公有 IPv4 地址將會變更。

重要

免責聲明:執行此 Runbook 可能會對您的帳戶產生 Amazon EC2 執行個體、Amazon EBS 磁碟區和 的額外費用AMI。如需詳細資訊,請參閱 Amazon EC2 定價Amazon EBS 定價

重要

先決條件

目標 Amazon EC2 執行個體需要對儲存庫的傳出存取權,才能視需要unzip使用套件管理員安裝驅動程式和相依性,例如 kernel-develgcclinux-headers、、makepatchrpm-buildwgetdracut、 和 。

支援的作業系統

  • Red Hat Enterprise Linux (RHEL) 8 和 9

  • Amazon Linux 2 和 AL2023

  • Ubuntu Server 18.04 LTS、20.04 和 22.04

  • Debian 11 和 12 (僅限AWS 分割區)

  • SUSE12SP5 和 SUSE15SP(5,6)

如何運作?

Runbook 會執行下列高階步驟:

  • 驗證先決條件並檢查執行個體是否適合遷移。

  • 建立和測試 AMI,以確保遷移成功。

  • 啟用增強型聯網 (ENA) 屬性並安裝最新的 ENA 驅動程式。

  • 驗證和設定 initramfs 中的 NVMe 模組。

  • 分析和修改 /etc/fstab,以將裝置名稱取代為 UUIDs。

  • 停用可預測界面命名並移除持久性網路規則。

  • 將複製的執行個體類型變更為所需的 Nitro 類型。

  • 建立可用於啟動 Nitro AMI 執行個體的 Golden Image 的最終版本。

執行此自動化 (主控台)

文件類型

 自動化

擁有者

Amazon

平台

Linux

參數

必要的 IAM 許可

AutomationAssumeRole 參數需要下列動作才能成功使用 Runbook。

  • autoscaling:DescribeAutoScalingInstances

  • ec2:CreateImage

  • ec2:CreateTags

  • ec2:DescribeImages

  • ec2:DescribeInstanceAttribute

  • ec2:DescribeInstances

  • ec2:DescribeInstanceStatus

  • ec2:DescribeInstanceTypeOfferings

  • ec2:DescribeInstanceTypes

  • ec2:DeregisterImage

  • ec2:ModifyInstanceAttribute

  • ec2:RunInstances

  • ec2:StartInstances

  • ec2:StopInstances

  • ec2:TerminateInstances

  • iam:PassRole

  • sns:Publish

  • ssm:DescribeAutomationExecutions

  • ssm:DescribeInstanceInformation

  • ssm:SendCommand

IAM 政策範例:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:DescribeAutoScalingInstances", "ec2:CreateImage", "ec2:CreateTags", "ec2:DescribeImages", :ec2:DescribeInstanceAttribute:, "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:DescribeInstanceTypes", "ec2:DeregisterImage", "ec2:ModifyInstanceAttribute", "ec2:RunInstances", "ec2:StartInstances", "ec2:StopInstances", "ec2:TerminateInstances", "iam:PassRole", "ssm:DescribeAutomationExecutions", "ssm:DescribeInstanceInformation", "ssm:SendCommand" ], "Resource": "*" } ] }

指示

請依照下列步驟設定自動化:

  1. 在文件下的 Systems Manager AWSSupport-CloneXenEC2InstanceAndMigrateToNitro中導覽至 。

  2. 選取 Execute automation

  3. 針對輸入參數,輸入下列內容:

    • AutomationAssumeRole (選用):

      • 描述:(選用) 允許 Systems Manager Automation 代表您執行動作的 AWS Identity and Access Management (IAM) 角色 ARN。如果未指定角色,Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。

      • 類型:AWS::IAM::Role::Arn

    • TargetInstanceId (必要):

      • 描述:(必要) 您要遷移至 Nitro 平台之目標 Amazon EC2 執行個體的執行個體 ID。

      • 類型:AWS::EC2::Instance::Id

    • NitroInstanceType (選用):

      • 描述:(選用) 輸入目的地 Nitro 執行個體類型。僅支援 Nitro M5, M6, C5, C6, R5, R6 和 T3 執行個體 (例如 t3.small)。預設:m5.xlarge。

      • 類型:String

      • 允許模式: ^(m5a?z?d?n?|c5a?d?n?|r5a?d?n?b?|(c|m|r)6(a|i)?d?)\\.(2|4|8|12|16|24|32)?xlarge$|^t3a?\\.((x|2x)?large|nano|micro|small|medium)$

      • 預設:m5.xlarge

    • SNSTopicArn (必要):

      • 描述:(必要) 提供 Amazon SNS 主題的 ARN 以進行核准通知。此 Amazon SNS 主題用於在自動化執行期間傳送核准通知。

      • 類型:String

      • 允許模式: ^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):sns:(us(-gov|-isob?)?|ap|ca|af|me|cn|eu|sa)-(central|(north|south)?(east|west)?)-\\d:\\d{12}:[a-zA-Z0-9_.-]{1,256}$

    • ApproverIAM (必要):

      • 描述:(必要) 提供能夠核准或拒絕動作的已 AWS 驗證委託人清單。核准者的數量上限為 10。

      • 類型:StringList

      • 允許模式: ^[a-zA-Z0-9_+=,.@\\-\/]{1,128}$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):(sts|iam)::[0-9]{12}:[a-zA-Z0-9_+=,.@\\-\/]{1,256}$

    • MinimumRequiredApprovals (選用):

      • 描述:(選用) 恢復自動化所需的最低核准數量。預設:1。

      • 類型:整數

      • 預設:1

    • DeleteResourcesOnFailure (選用):

      • 描述:(選用) 是否終止複製的 Amazon EC2 執行個體,以及AMI自動化是否失敗。

      • 類型:Boolean

      • 允許的值: [true, false]

      • 預設:true

    • 確認 (必要):

      • 描述:(必要) 如果您確認步驟,請閱讀此自動化執行手冊所執行動作的完整詳細資訊,並撰寫「是,我了解並確認」。

      • 類型:String

      • 允許模式: ^Yes, I understand and acknowledge$

    • AllowInstanceStoreInstances (選用):

      • 描述:(選用) 如果您指定 yes,則 Runbook 會在已連接執行個體存放磁碟區的執行個體上執行。警告:執行個體停止時,執行個體儲存體磁碟區中的資料會遺失。此參數有助於避免意外的資料遺失。

      • 類型:Boolean

      • 允許的值: [yes, no]

      • 預設:no

  4. 選取執行

  5. 自動化會啟動。

  6. 文件會執行下列步驟:

    • checkConcurrency:

      確保只有一個針對目前 Amazon EC2 執行個體的 Runbook 執行。

    • getTargetInstanceProperties:

      擷取目標 Amazon EC2 執行個體的詳細資訊。

    • checkIfNitroInstanceTypeIsSupportedInAZ:

      決定是否在與目標 Amazon EC2 執行個體相同的可用區域中支援目標 Nitro 執行個體類型。

    • createTestImage:

      AMI 從提供的執行個體建立測試。

    • launchTestInstanceInSameSubnet:

      AMI 使用與目標 Amazon EC2 執行個體相同的組態,從測試啟動測試 Amazon EC2 執行個體。

    • approvalToStopTargetInstance:

      等待指定的委託人核准以停止目標執行個體。

    • createBackupImage:

      AMI 從提供的執行個體建立 以進行備份。

    • launchInstanceInSameSubnet:

      AMI 使用與來源 Amazon EC2 執行個體相同的組態,從備份啟動新的 Amazon EC2 執行個體。

    • checkAndInstallENADrivers:

      決定增強型網路轉接器 (ENA) 驅動程式在 Amazon EC2 執行個體上的可用性,如果遺失,則安裝 。

    • checkAndAddNVMEDrivers:

      確定複製的 Amazon EC2 執行個體上 NVMe 驅動程式的可用性,如果遺失,則安裝 。

    • checkAndModifyFSTABEntries:

      決定是否在 中使用裝置名稱,如果找到,則會將其/etc/fstab取代為其 UUIDs。

    • setNitroInstanceTypeForClonedInstance:

      為複製的 Amazon EC2 執行個體設定提供的目標 Amazon EC2 執行個體類型。

    • approvalForCreatingImageAfterDriversInstallation:

      如果複製的 Amazon EC2 執行個體在 Nitro 平台上成功開機,則等待使用者核准。

    • createImageAfterDriversInstallation:

      只有在新的 Amazon EC2 執行個體成功在 Nitro 平台上開機時,才會從新的 Amazon EC2 執行個體建立映像。

  7. 完成後,請檢閱輸出區段以取得執行的詳細結果。

參考

AWS Systems Manager  自動化