本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 EC2 執行個體需要對儲存庫的傳出存取權,才能視需要unzip使用套件管理員安裝驅動程式和相依性,例如 kernel-devel、gcc、linux-headers、、make、patchrpm-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:DescribeAutoScalingInstancesec2:CreateImageec2:CreateTagsec2:DescribeImagesec2:DescribeInstanceAttributeec2:DescribeInstancesec2:DescribeInstanceStatusec2:DescribeInstanceTypeOfferingsec2:DescribeInstanceTypesec2:DeregisterImageec2:ModifyInstanceAttributeec2:RunInstancesec2:StartInstancesec2:StopInstancesec2:TerminateInstancesiam:PassRolesns:Publishssm:DescribeAutomationExecutionsssm:DescribeInstanceInformationssm: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": "*" } ] }
指示
請依照下列步驟設定自動化:
-
在文件下的 Systems Manager
AWSSupport-CloneXenEC2InstanceAndMigrateToNitro中導覽至 。 -
選取
Execute automation。 -
針對輸入參數,輸入下列內容:
-
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
-
-
選取執行。
-
自動化會啟動。
-
文件會執行下列步驟:
-
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 執行個體建立映像。
-
-
完成後,請檢閱輸出區段以取得執行的詳細結果。
參考
AWS Systems Manager 自動化