AWSSupport-MigrateXenToNitroLinux - AWS Systems Manager 自動化手冊參考

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

AWSSupport-MigrateXenToNitroLinux

Description (描述)

執行手AWSSupport-MigrateXenToNitroLinux冊會將亞馬遜彈性運算雲端 (Amazon EC2) Linux Xen 執行個體複製、準備和遷移到執行個體類型。Nitro此 Runbook 為操作類型提供了兩個選項:

  • Clone&Migrate— 此選項的工作流程包含「初步檢查」、「測試」和「Clone&Migrate階段」。工作流程是使用工作流程執行手AWSSupport-CloneXenEC2InstanceAndMigrateToNitro冊。

  • FullMigration— 此選項會執行Clone&Migrate工作流程,然後執行「取代根 Amazon EBS 磁碟區」的其他步驟。

重要

使用此執行手冊會對您的帳戶產生 Amazon EC2 執行個體的執行時間、建立 Amazon 彈性區塊存放區 (Amazon EBS) 磁碟區的成本,以及。AMIs如需詳細資訊,請參閱亞馬遜 EC2 定價亞馬遜 EBS 定價

初步檢查

在繼續移轉之前,自動化會執行下列初步檢查。如果有任何檢查失敗,則自動化結束。此階段只是Clone&Migrate工作流程的一部分。

  • 檢查目標執行個體是否已經是Nitro執行個體類型。

  • 檢查目標執行個體是否已使用 Spot 執行個體購買選項。

  • 檢查執行個體儲存磁碟區是否已連接至目標執行個體。

  • 驗證目標執行個體作業系統 (OS) 是否為 Linux。

  • 檢查目標執行個體是否屬於 Amazon EC2 自動擴展群組的一部分。如果它是 Auto Scaling 群組的一部分,則自動化會驗證執行個體是否處於狀standby態。

  • 驗證執行個體是否由AWS Systems Manager管理。

測試

自動化會從目標執行個體建立 Amazon Machine Image (AMI),並從新建立的執行個體啟動測試執行個體AMI。此階段只是Clone&Migrate工作流程的一部分。

如果測試執行個體通過所有狀態檢查,則自動化會暫停,並透過 Amazon 簡單通知服務 (Amazon SNS) 通知要求指定主體的核准。如果提供核准,則自動化會終止測試執行個體、停止目標執行個體並繼續進行移轉,而新建立AMI的工作流程結束時會取消註冊。Clone&Migrate

注意

在提供核准之前,建議先確認目標執行個體上執行的所有應用程式都已正常關閉。

複製和遷移

自動化操作會AMI從目標執行個體建立另一個執行個體,然後啟動新執行個體以變更為Nitro執行個體類型。在繼續移轉之前,自動化會完成下列先決條件。如果有任何檢查失敗,則自動化結束。此階段也只是Clone&Migrate工作流程的一部分。

  • 開啟增強型網路 (ENA) 屬性。

  • 如果尚未安裝 ENA 驅動程式,請安裝最新版本,或將 ENA 驅動程式版本更新為最新版本。若要確保最大的網路效能,如果Nitro執行個體類型是第 6 代,則必須更新為最新的 ENA 驅動程式版本。

  • 驗證是否已安裝 NVMe 模組。如果已安裝模組,則自動化會驗證模組是否已載入initramfs

  • 使用區塊裝置名稱 (/dev/sd*/dev/xvd*) 分析/etc/fstab項目,並以各自的 UUID 取代項目。在修改組態之前,自動化會在路徑上建立檔案的備份/etc/fstab*

  • 關閉可預測的介面命名,方法是將net.ifnames=0選項加入至/etc/default/grub檔案中的GRUB_CMDLINE_LINUX行 (如果存在) 或中的核心/boot/grub/menu.lst

  • 移除檔/etc/udev/rules.d/70-persistent-net.rules案 (如果存在)。移除檔案之前,自動化會在路徑上建立檔案的備份/etc/udev/rules.d/

確認所有需求後,例證類型會變更為您指定的Nitro例證類型。在以執行個體類型啟動之後,自動化會等待新建立的執行個Nitro體通過所有狀態檢查。接著,自動化會等待指定主參與者的核准,以建立已成功啟Nitro動AMI的執行個體。如果核准遭到拒絕,自動化作業會結束,讓新建立的執行個體保持執行中,且目標執行個體會保持停止狀態

更換根亞馬遜 EBS 卷

如果您選擇FullMigrationOperationType,自動化會將目標 Amazon EC2 執行個體遷移到您指定的Nitro執行個體類型。自動化請求指定主體的核准,以複製的 Amazon EC2 執行個體的根磁碟區取代目標 Amazon EC2 執行個體的根 Amazon EBS 磁碟區。遷移成功後,複製的 Amazon EC2 執行個體就會終止。如果自動化失敗,原始的 Amazon EBS 根磁碟區會連接到目標 Amazon EC2 執行個體。如果連接到目標 Amazon EC2 執行個體的根 Amazon EBS 磁碟區具有套用aws:前綴的標籤,則不支援該FullMigration操作。

開始之前

目標執行個體必須有輸出網際網路存取權。這是為了訪問驅動程序和依賴關係的存儲庫 kernel-devel gcc patch rpm-buildwget,例如dracut,make,linux-headers,,和unzip。如果需要,可以使用包管理器。

需要 Amazon SNS 主題才能傳送核准和更新的通知。如需有關建立 Amazon SNS 主題的詳細資訊,請參閱 Amazon 簡單通知服務開發人員指南中的建立 Amazon SNS 主題

此 Runbook 支援下列作業系統:

  • RHEL7.

  • 亞馬遜 Linux, 亞馬遜 Linux 2

  • Debian Server

  • Ubuntu 服務器 18.04 LTS,20.04 LTS 和 20.10 海峽

  • SUSE Linux Enterprise Server(SUSE12SP5, SUSE15SP2)

運行此自動化(控制台)

文件類型

 自動化

擁有者

Amazon

平台

Linux

參數

  • AutomationAssumeRole

    類型:字串

    說明:(選用) 允許系統管理員自動化代表您執行動作的 AWS Identity and Access Management (IAM) 角色的 Amazon 資源名稱 (ARN)。如果未指定角色,系統管理員自動化會使用啟動此 runbook 的使用者的權限。

  • 確認

    類型:字串

    描述:(必填)閱讀此自動化 runbook 執行的操作的完整詳細信息,然後輸入Yes, I understand and acknowledge以繼續使用 runbook。

  • 審批

    類型:字串

    說明:(必要) 可提供自動化核准的 IAM 角色、使用者或使用者名稱的 ARN。您最多可以指定 10 名核准者。

  • DeleteResourcesOnFailure

    類型:布林值

    說明:(選擇性) 決定如果自動化失敗,是否刪除新建立的執行個體和AMI移轉。

    有效值:真 | 假

    預設:True

  • MinimumRequiredApprovals

    類型:字串

    描述:(選擇性) 要求核准時繼續執行自動化操作所需的最小核准數目。

    有效值:1-10

    預設:1

  • NitroInstanceType

    類型:字串

    說明:(必要) 您要變更Nitro執行個體的目標執行個體類型。支援的執行個體類型包括 M5、M6、C5、C6、R5、R6 和 T3。

    預設值:大

  • OperationType

    類型:字串

    描述:(必要) 您要執行的作業。此選FullMigration項會執行與目標執行個體相同的工作,Clone&Migrate並另外取代目標執行個體的根磁碟區。在遷移程序之後,目標執行個體的根磁碟區會取代為新建立執行個體的根磁碟區。此FullMigration作業不支援邏輯磁碟區管理員 (LVM) 所定義的根磁碟區。

    有效值:複製與移轉 | FullMigration

  • SNS TopicArn

    類型:字串

    說明:(必要) 要核准通知之 Amazon SNS 主題的 ARN。Amazon SNS 主題用於在自動化期間傳送必要的核准通知。

  • TargetInstanceId

    類型:字串

    說明:(必填) 要遷移之 Amazon EC2 執行個體的 ID。

必要的 IAM 許可

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

  • ssm:DescribeAutomationExecutions

  • ssm:StartAutomationExecution

  • ssm:DescribeInstanceInformation

  • ssm:DescribeAutomationStepExecutions

  • ssm:SendCommand

  • ssm:GetAutomationExecution

  • ssm:ListCommands

  • ssm:ListCommandInvocations

  • ec2:DescribeInstances

  • ec2:DescribeInstanceTypeOfferings

  • ec2:DescribeInstanceTypes

  • ec2:DescribeImages

  • ec2:CreateImage

  • ec2:RunInstances

  • ec2:DescribeInstanceStatus

  • ec2:DeregisterImage

  • ec2:DeleteSnapshot

  • ec2:TerminateInstances

  • ec2:StartInstances

  • ec2:DescribeKeyPairs

  • ec2:StopInstances

  • kms:CreateGrant*

  • kms:ReEncrypt

  • ec2:ModifyInstanceAttribute

  • autoscaling:DescribeAutoScalingInstances

  • iam:passRole

  • iam:ListRoles

文件步驟

  • startOfPreliminaryChecksBranch-分支至初步檢查工作流程。

  • getTargetInstanceProperties-從目標執行個體收集詳細資料。

  • checkIfNitroInstanceTypeIsSupportedInAZ-判斷目標 Amazon EC2 執行個體類型在與目標執行個體相同的可用區域中是否受支援。

  • getXenInstanceTypeDetails-收集來源執行環境類型的詳細資訊。

  • checkIfInstanceHypervisorIsNitroAlready-檢查目標執行個體是否已作為執行個Nitro體類型執行。

  • checkIfTargetInstanceLifecycleIsSpot-檢查目標執行個體的購買選項是否為 Spot。

  • checkIfOperatingSystemIsLinux-檢查目標執行個體作業系統是否為 Linux。

  • verifySSMConnectivityForTargetInstance-驗證目標執行個體是否由系統管理員管理。

  • checkIfEphemeralVolumeAreSupported-檢查目標執行個體的目前執行個體類型是否支援執行個體儲存磁碟區。

  • verifyIfTargetInstanceHasEphemeralVolumesAttached-檢查目標執行個體是否已連接執行個體儲存磁碟區。

  • checkIfRootVolumeIsEBS-檢查目標執行個體的根磁碟區類型是否為 EBS。

  • checkIfTargetInstanceIsInASG-檢查目標執行個體是否為「自動縮放」群組的一部分。

  • endOfPreliminaryChecksBranch-初步檢查分支結束

  • startOfTestBranch-分支到測試工作流程。

  • createTestImage-建立目標執行個體AMI的測試。

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

  • cleanupTestInstance-終止測試實例。

  • endOfTestBranch-測試分支結束。

  • checkIfTestingBranchSucceeded-檢查測試分支的狀態。

  • approvalToStopTargetInstance-等待指定主參與者的核准,以停止目標執行處理。

  • stopTargetEC2Instance-停止目標執行個體。

  • forceStopTargetEC2Instance-只有在上一個步驟無法停止執行個體時,Force 才會停止目標執行個體。

  • startOfCloneAndMigrateBranch-分支到Clone&Migrate工作流程。

  • createBackupImage-建立要做為備份AMI的目標執行個體。

  • launchInstanceInSameSubnet-AMI 使用與來源執行個體相同的設定,從備份啟動新執行個體。

  • waitForClonedInstanceToPassStatusChecks-等待新建立的執行個體通過所有狀態檢查。

  • verifySSMConnectivityForClonedInstance-驗證新建立的執行個體是否由系統管理員管理。

  • checkAndInstallENADrivers-檢查 ENA 驅動程式是否已安裝在新建立的執行個體上,並視需要安裝驅動程式。

  • checkAndAddNVMEDrivers-檢查 NVMe 驅動程式是否已安裝在新建立的執行個體上,並視需要安裝驅動程式。

  • checkAndModifyFSTABEntries-檢查裝置名稱是否已在中使用,/etc/fstab並視需要將其取代為 UUID。

  • stopClonedInstance-停止新建立的執行個體。

  • forceStopClonedInstance-只有在上一個步驟無法停止執行個體時,Force 才會停止新建立的執行個體。

  • checkENAAttributeForClonedInstance-檢查是否為新建立的執行個體開啟增強型聯網屬性。

  • setNitroInstanceTypeForClonedInstance-將新建立例證的執行個體類型變更為您指定的Nitro執行個體類型。

  • startClonedInstance-啟動您已變更其執行個體類型的新建立執行個體。

  • approvalForCreatingImageAfterDriversInstallation-如果執行個體成功啟動為Nitro執行個體類型,則自動化作業會等待所需主體的核准。如果提供了核准,AMI則會建立一個作為金卡使用AMI。

  • createImageAfterDriversInstallation-創建AMI一個用作黃金AMI。

  • endOfCloneAndMigrateBranch-Clone&Migrate 分支結束

  • cleanupTestImage-取消註冊為測試而AMI創建的。

  • failureHandling-檢查是否選擇在失敗時終止資源。

  • onFailureTerminateClonedInstance-如果自動化失敗,則終止新建立的執行個體。

  • onFailurecleanupTestImage-取消註冊為測試而AMI創建的。

  • onFailureApprovalToStartTargetInstance-如果自動化失敗,請等待指定主參與者的核准,以啟動目標執行個體。

  • onFailureStartTargetInstance-如果自動化失敗,請啟動目標執行個體。

必要的 IAM 許可

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

  • ssm:DescribeAutomationExecutions

  • ssm:DescribeInstanceInformation

  • ssm:DescribeAutomationStepExecutions

  • ssm:SendCommand

  • ssm:GetAutomationExecution

  • ssm:ListCommands

  • ssm:ListCommandInvocations

  • ec2:DescribeInstances

  • ec2:DescribeInstanceTypeOfferings

  • ec2:DescribeInstanceTypes

  • ec2:DescribeImages

  • ec2:CreateImage

  • ec2:RunInstances

  • ec2:DescribeInstanceStatus

  • ec2:DeregisterImage

  • ec2:DeleteSnapshot

  • ec2:TerminateInstances

  • ec2:StartInstances

  • ec2:DescribeKeyPairs

  • ec2:StopInstances

  • kms:CreateGrant*

  • kms:ReEncrypt

  • ec2:ModifyInstanceAttribute

  • ec2:DetachVolume

  • ec2:AttachVolume

  • ec2:DescribeVolumes

  • autoscaling:DescribeAutoScalingInstances

  • iam:PassRole

  • ec2:CreateTags

  • cloudformation:DescribeStackResources

文件步驟

FullMigration工作流程會執行與工Clone&Migrate作流程相同的步驟,並另外執行下列步驟:

  • checkConcurrency-驗證此 Runbook 只有一個針對您指定的 Amazon EC2 執行個體的自動化操作。如果 runbook 發現另一個正在進行中的自動化以相同的執行個體為目標,則自動化結束。

  • getTargetInstanceProperties-從目標執行個體收集詳細資料。

  • checkRootVolumeTags-判斷目標 Amazon EC2 執行個體的根磁碟區是否包含任何AWS保留標籤。

  • cloneTargetInstanceAndMigrateToNitro-使用手AWS-CloneXenInstanceToNitro冊啟動子自動化。

  • branchOnTheOperationType-針對您為OperationType參數指定的值進行分支。

  • getClonedInstanceId-從子系自動化擷取新啟動執行個體的 ID。

  • checkIfRootVolumeIsBasedOnLVM-決定根分割區是否由 LVM 管理。

  • branchOnTheRootVolumeLVMStatus-如果從主參與者收到所需的最低核准,則自動化會繼續取代根磁碟區。

  • manualInstructionsInCaseOfLVM-如果根磁碟區由 LVM 管理,則自動化會傳送輸出,其中包含如何手動取代根磁碟區的指示。

  • startOfReplaceRootEBSVolumeBranch-啟動「取代根 EBS 磁碟區」分支工作流程。

  • checkIfTargetInstanceIsManagedByCFN-判斷目標執行個體是否由AWS CloudFormation堆疊管理。

  • branchOnCFNStackStatus-基於CloudFormation堆棧狀態的分支。

  • approvalForRootVolumesReplacement(WithCFN)-如果目標執行個體是由啟動的CloudFormation,則在新啟動的執行個體成功啟動為執行個體類型後,自動化作Nitro業會等待核准。提供核准後,目標執行個體的 Amazon EBS 磁碟區會被新啟動執行個體的根磁碟區取代。

  • approvalForRootVolumesReplacement-新啟動的執行個Nitro體成功啟動為執行個體類型後,等待核准。提供核准後,目標執行個體的 Amazon EBS 磁碟區會被新啟動執行個體的根磁碟區取代。

  • assertIfTargetEC2InstanceIsStillStopped-在取代根磁碟區之前,驗證目標執行個體是否處於某個stopped狀態。

  • stopTargetInstanceForRootVolumeReplacement-如果目標執行個體正在執行,自動化會在更換根磁碟區前停止執行個體。

  • forceStopTargetInstanceForRootVolumeReplacement-如果上一個步驟失敗,Force 會停止目標執行個體。

  • stopClonedInstanceForRootVolumeReplacement-在更換 Amazon EBS 磁碟區之前停止新建立的執行個體。

  • forceStopClonedInstanceForRootVolumeReplacement-如果上一個步驟失敗,Force 會停止新建立的執行個體。

  • getBlockDeviceMappings-擷取目標執行個體和新建立執行個體的區塊裝置對應。

  • replaceRootEbsVolumes-將目標執行個體的根磁碟區取代為新建立執行個體的根磁碟區。

  • EndOfReplaceRootEBSVolumeBranch-取代根 EBS 磁碟區分支工作流程結束。

  • checkENAAttributeForTargetInstance-檢查目標 Amazon EC2 執行個體的增強型聯網 (ENA) 屬性是否已開啟。

  • enableENAAttributeForTargetInstance-視需要開啟目標 Amazon EC2 執行個體的 ENA 屬性。

  • setNitroInstanceTypeForTargetInstance-將目標執行個體變更為您指定的Nitro執行個體類型。

  • replicateRootVolumeTags-從目標 Amazon EC2 執行個體複寫根 Amazon EBS 磁碟區上的標籤。

  • startTargetInstance-變更執行個體類型後,啟動目標 Amazon EC2 執行個體。

  • onFailureStopTargetEC2Instance-如果目標 Amazon EC2 執行個體無法以執行個體類型啟動,則停止該Nitro執行個體。

  • onFailureForceStopTargetEC2Instance-如果上一個步驟失敗,強制會停止目標 Amazon EC2 執行個體。

  • OnFailureRevertOriginalInstanceType-如果目標執行個體無法以執行個體類型啟動,則將目標 Amazon EC2 執行個體還原為原始Nitro執行個體類型。

  • onFailureRollbackRootVolumeReplacement-如果需要,還原replaceRootEbsVolumes步驟所做的所有更改。

  • onFailureApprovalToStartTargetInstance-復原先前的變更後,等待指定主體的核准啟動目標 Amazon EC2 執行個體。

  • onFailureStartTargetInstance-啟動目標亞馬遜 EC2 實例。

  • terminateClonedEC2Instance-取代根 Amazon EBS 磁碟區後,終止複製的 Amazon EC2 執行個體。