

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

# `AWSSupport-CloneXenEC2InstanceAndMigrateToNitro`
<a name="automation-awssupport-clonexenec2instanceandmigratetonitro"></a>

 **Description** 

**AWSSupport-CloneXenEC2InstanceAndMigrateToNitro** Runbook 複製、準備和遷移複製的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體，目前正在 Amazon EC2 Xen 平台上執行，以在 [Amazon EC2 Nitro 平台上](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances)執行。此自動化分為三個不同的分支：
+ **初步檢查**：評估繼續進行遷移的所有先決條件，包括檢查目標 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 定價](https://aws.amazon.com/ec2/pricing/)和 [Amazon EBS 定價](https://aws.amazon.com/ebs/pricing/)。

**重要**  
 **先決條件**   
目標 Amazon EC2 執行個體需要對儲存庫的傳出存取權，才能視需要`unzip`使用套件管理員安裝驅動程式和相依性，例如 `kernel-devel`、`gcc`、`linux-headers`、、`make`、`patch``rpm-build``wget``dracut`、 和 。

 **支援的作業系統** 
+ 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 的最終版本。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-CloneXenEC2InstanceAndMigrateToNitro) 

**文件類型**

 自動化

**擁有者**

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 [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-CloneXenEC2InstanceAndMigrateToNitro/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-CloneXenEC2InstanceAndMigrateToNitro/description)中導覽至 。

1. 選取 **`Execute automation`**。

1. 針對輸入參數，輸入下列內容：
   + **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`

1. 選取**執行**。

1. 自動化會啟動。

1. 文件會執行下列步驟：
   + **`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 執行個體建立映像。

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

**參考**

AWS Systems Manager  自動化
+ [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-CloneXenEC2InstanceAndMigrateToNitro/description)
+ [執行自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [設定自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支援自動化工作流程](https://aws.amazon.com/premiumsupport/technology/saw/)