

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# `AWSSupport-MigrateXenToNitroLinux`
<a name="automation-awssupport-migrate-xen-to-nitro"></a>

 **説明** 

 `AWSSupport-MigrateXenToNitroLinux` ランブックでは、Amazon Elastic Compute Cloud (Amazon EC2) Linux Xen インスタンスを[Nitro インスタンスタイプ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances)にクローンし、準備し、移行します。このランブックには、オペレーションタイプに 2 つのオプションがあります。
+ `Clone&Migrate` — このオプションのワークフローは、**事前チェック**、**テスト**、**Clone&Migrate**フェーズで構成されています。ワークフローは `AWSSupport-CloneXenEC2InstanceAndMigrateToNitro` ランブックを使用して実行されます。
+ `FullMigration` — このオプションは `Clone&Migrate` ワークフローを実行してから、**「ルート Amazon EBS ボリュームを置き換える」**という追加ステップを実行します。

**重要**  
このランブックを使用すると、Amazon EC2 インスタンスの実行時間、Amazon Elastic Block Store (Amazon EBS) ボリュームの作成および AMIs など、アカウントにコストが発生します。詳細については、「[Amazon EC2 料金表](https://aws.amazon.com/ec2/pricing/)」および「[Amazon EBS 料金表](https://aws.amazon.com/ebs/pricing/)」を参照してください。

 **事前チェック** 

自動化は、移行を続行する前に、以下の事前チェックを実行します。いずれかのチェックが失敗すると、自動化は終了します。このフェーズは `Clone&Migrate` ワークフローの一部にすぎません。
+ ターゲットインスタンスが既に Nitro インスタンスタイプであるかどうかを確認します。
+ ターゲットインスタンスにスポットインスタンス購入オプションが使用されたかどうかを確認します。
+ インスタンスストアボリュームがターゲットインスタンスにアタッチされているかどうかを確認します。
+ ターゲットインスタンスのオペレーティングシステム (OS) が Linux であることを確認します。
+  ターゲットインスタンスが Amazon EC2 Auto Scaling グループの一部であるかどうかを確認します。Auto Scaling グループの一部である場合、自動化はインスタンスが `standby` 状態にあることを確認します。
+ インスタンスが によって管理されていることを確認します AWS Systems Manager。

 **テスト** 

自動化はターゲットインスタンスから Amazon Machine Image (AMI) を作成し、新しく作成された AMI からテストインスタンスを起動します。このフェーズは `Clone&Migrate` ワークフローの一部にすぎません。

テストインスタンスがすべてのステータスチェックに合格すると、自動化は一時停止し、Amazon Simple Notiﬁcation Service (Amazon SNS) 通知を通じて指定されたプリンシパルからの承認が要求されます。承認が得られた場合、自動化はテストインスタンスを終了し、ターゲットインスタンスを停止して移行を続行します。その間、新しく作成された AMI は `Clone&Migrate` ワークフローの最後で登録解除されます。

**注記**  
承認を行う前に、ターゲットインスタンスで実行中のすべてのアプリケーションが正常に閉じられていることを確認することをお勧めします。

 **クローニングと移行** 

自動化により、ターゲットインスタンスから別の AMI が作成され、新しいインスタンスが起動して Nitro インスタンスタイプに変更されます。自動化は、移行を続行する前に、以下の事前チェックを実行します。いずれかのチェックが失敗すると、自動化は終了します。このフェーズも `Clone&Migrate` ワークフローの一部にすぎません。
+ 拡張ネットワーク (ENA) 属性を有効にします。
+ ENA ドライバーがまだインストールされていない場合は最新バージョンをインストールし、ENA ドライバーのバージョンを最新バージョンに更新します。ネットワークパフォーマンスを最大化するには、Nitro インスタンスタイプが第 6 世代の場合は、最新の ENA ドライバーバージョンに更新する必要があります。
+  NVMe モジュールがインストールされていることを確認します。モジュールがインストールされている場合、自動化はモジュールが `initramfs` にロードされたことを確認します。
+  `/etc/fstab` を分析し、ブロックデバイス名 (`/dev/sd*` または `/dev/xvd*`) のエントリをそれぞれの UUID に置き換えます。設定を変更する前に、自動化はパス `/etc/fstab*` にあるファイルのバックアップを作成します。
+  `/etc/default/grub` ファイル内に `GRUB_CMDLINE_LINUX` 行が存在する場合、その行に、または `/boot/grub/menu.lst` 内のカーネルに `net.ifnames=0` オプションを追加することで、予測可能なインターフェイス命名を無効にします。
+  `/etc/udev/rules.d/70-persistent-net.rules` ファイルが存在する場合、それを削除します。ファイルを削除する前に、自動化はパス `/etc/udev/rules.d/` にあるファイルのバックアップを作成します。

すべての要件を確認した後、インスタンスタイプは、指定した Nitro インスタンスタイプに変更されます。自動化は、新しく作成されたインスタンスが Nitro インスタンスタイプとして起動した後、すべてのステータスチェックに合格するのを待ちます。その後、自動化は指定されたプリンシパルからの承認を待って、Nitro インスタンスが正常に起動された AMI を作成します。承認が拒否されると、自動化は終了し、新しく作成されたインスタンスは実行されたままになり、ターゲットインスタンスは停止したままになります。

 **Amazon EBS ボリュームの置き換え** 

 `OperationType` として `FullMigration` を選択した場合、自動化はターゲット Amazon EC2 インスタンスを指定した Nitro インスタンスタイプに移行します。自動化は、ターゲット Amazon EC2 インスタンスのルート Amazon EBS ボリュームを、クローンされた Amazon EC2 インスタンスのルートボリュームに置き換える承認を、指定されたプリンシパルにリクエストします。移行が成功すると、クローンされた Amazon EC2 インスタンスは終了します。自動化が失敗した場合、元の Amazon EBS ルートボリュームがターゲット Amazon EC2 インスタンスにアタッチされます。ターゲット Amazon EC2 インスタンスにアタッチされたルート Amazon EBS ボリュームに、`aws:` プレフィックスが適用されたタグがある場合、`FullMigration` オペレーションはサポートされません。

 **[開始する前に]** 

ターゲットインスタンスには、アウトバウンドのインターネットアクセスが必要です。これは、ドライバーのリポジトリや kernel-devel、gcc、patch、rpm-build、wget、dracut、make、linux-headers、unzip などの依存関係にアクセスするためです。必要に応じて Package マネージャーを使用します。

承認と更新の通知を送信するには、Amazon SNS トピックが必要です。Amazon SNS トピックの作成の詳細については、Amazon Simple Notification Service デベロッパーガイドの「[Amazon SNS トピックの作成](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)」を参照してください。

 このランブックでは、以下のオペレーティングシステムがサポートされています。
+ RHEL 7.x ～ 8.5
+ Amazon Linux (2018.03)、Amazon Linux 2
+ Debian サーバー
+ Ubuntu Server 18.04 LTS、20.04 LTS、20.10 STR
+ SUSE Linux Enterprise Server (SUSE12SP5、SUSE15SP2)

 [このオートメーションを実行する (コンソール)](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-MigrateXenToNitroLinux) 

**ドキュメントタイプ**

Automation

**[所有者]**

Amazon

**[Platforms]** (プラットフォーム)

リナックス

**パラメータ**
+ AutomationAssumeRole

  タイプ: 文字列

  説明: (オプション) Systems Manager Automation がユーザーに代わってアクションを実行できるようにする AWS Identity and Access Management (IAM) ロールの Amazon リソースネーム (ARN)。ロールを指定しない場合、Systems Manager Automation はこのランブックを開始するユーザーのアクセス許可を使用します。
+ 確認

  タイプ: 文字列

  説明: (必須) この自動化ランブックで実行されるアクションの完全な詳細を読み、「**Yes, I understand and acknowledge**」と入力してランブックの使用を続行してください。
+ ApproverIAM

  タイプ: 文字列

  説明: (必須) 自動化を承認できる IAM ロール、ユーザー、またはユーザー名の ARN。最大 10 の承認者を指定できます。
+ DeleteResourcesOnFailure

  型: ブール値

  説明: (オプション) 自動化が失敗した場合に、新しく作成されたインスタンスと移行用の AMI を削除するかどうかを決定します。

  有効な値: True \$1 False

  デフォルト: True
+ MinimumRequiredApprovals

  タイプ: 文字列

  説明: (オプション) 承認がリクエストされたときに、自動化を継続して実行するために必要な最小承認数。

  有効な値: 1 ～ 10

  デフォルト: 1
+ NitroInstanceType

  タイプ: 文字列

  説明: (必須) インスタンスを変更したい Nitro インスタンスタイプ。サポートされているインスタンスタイプには、M5、M6、C5、C6、R5、R6、T3 があります。

  デフォルト: m5.xlarge
+ OperationType

  タイプ: 文字列

   説明: (必須) 実行する操作。`FullMigration` オプションは `Clone&Migrate` と同じタスクを実行し、さらにターゲットインスタンスのルートボリュームを置き換えます。ターゲットインスタンスのルートボリュームは、移行プロセスの後に新しく作成されたインスタンスのルートボリュームに置き換えられます。`FullMigration` 操作は、ロジカルボリュームマネージャー (LVM) によって定義されたルートボリュームをサポートしていません。

  有効な値: Clone&Migrate \$1 FullMigration
+ SNSTopicArn

  タイプ: 文字列

  説明: (必須) 承認通知の Amazon SNS トピックの ARN。Amazon SNS トピックは、自動化中に必要な承認通知を送信するために使用されます。
+ TargetInstanceId

  タイプ: 文字列

  説明: (必須) 移行する Amazon EC2 インスタンスの ID。

## Clone&Migrate のワークフロー
<a name="clone-ami"></a>

**必要な IAM アクセス許可**

`AutomationAssumeRole` パラメータでは、ランブックを正常に使用するために、次のアクションが必要です。
+  `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` - ターゲットインスタンスの購入オプションがスポットかどうかをチェックします。
+  `checkIfOperatingSystemIsLinux` - ターゲットインスタンス OS が Linux かどうかを確認します。
+  `verifySSMConnectivityForTargetInstance` - ターゲットインスタンスが Systems Manager によって管理されていることを確認します。
+  `checkIfEphemeralVolumeAreSupported` - ターゲットインスタンスの現在のインスタンスタイプがインスタンスストアボリュームをサポートしているかどうかを確認します。
+  `verifyIfTargetInstanceHasEphemeralVolumesAttached` - ターゲットインスタンスがインスタンスストアボリュームにアタッチされているかどうかを確認します。
+  `checkIfRootVolumeIsEBS` - ターゲットインスタンスのルートボリュームタイプが EBS かどうかを確認します。
+  `checkIfTargetInstanceIsInASG` - ターゲットインスタンスが Auto Scaling グループの一部であるかどうかを確認します。
+  `endOfPreliminaryChecksBranch` - 予備チェック分岐の終了。
+  `startOfTestBranch` - テストワークフローへの分岐。
+  `createTestImage` - ターゲットインスタンスのテスト AMI を作成します。
+  `launchTestInstanceInSameSubnet` - ターゲットインスタンスと同じ設定を使用して、テスト AMI からテストインスタンスを起動します。
+  `cleanupTestInstance` - テストインスタンスを終了します。
+  `endOfTestBranch` - テスト分岐の終了。
+  `checkIfTestingBranchSucceeded` - テスト分岐のステータスをチェックします。
+  `approvalToStopTargetInstance` - 指定されたプリンシパルからの承認を待って、ターゲットインスタンスを停止します。
+  `stopTargetEC2Instance` - ターゲットインスタンスを停止します。
+  `forceStopTargetEC2Instance` - 前のステップでインスタンスを停止できなかった場合にのみ、ターゲットインスタンスを強制停止します。
+  `startOfCloneAndMigrateBranch` - Clone&Migrate ワークフローへの分岐。
+  `createBackupImage` - バックアップとして機能するターゲットインスタンスの AMI を作成します。
+  `launchInstanceInSameSubnet` - ソースインスタンスと同じ設定を使用して、バックアップ AMI から新しいインスタンスを起動します。
+  `waitForClonedInstanceToPassStatusChecks` - 新しく作成されたインスタンスがすべてのステータスチェックに合格するのを待ちます。
+  `verifySSMConnectivityForClonedInstance` - 新しく作成されたインスタンスが Systems Manager によって管理されていることを確認します。
+  `checkAndInstallENADrivers` - 新しく作成されたインスタンスに ENA ドライバーがインストールされているかどうかを確認し、必要に応じてドライバーをインストールします。
+  `checkAndAddNVMEDrivers` - 新しく作成されたインスタンスに NVMe ドライバーがインストールされているかどうかを確認し、必要に応じてドライバーをインストールします。
+  `checkAndModifyFSTABEntries` - `/etc/fstab` でデバイス名が使用されているかどうかを確認し、必要に応じて UUID に置き換えます。
+  `stopClonedInstance` - 新しく作成されたインスタンスを停止します。
+  `forceStopClonedInstance` - 前のステップでインスタンスを停止できなかった場合にのみ、新しく作成されたインスタンスを強制停止します。
+  `checkENAAttributeForClonedInstance` - 新しく作成されたインスタンスの拡張ネットワーキング属性がオンになっているかどうかを確認します。
+  `setNitroInstanceTypeForClonedInstance` - 新しく作成されたインスタンスのインスタンスタイプを、指定した Nitro インスタンスタイプに変更します。
+  `startClonedInstance` - インスタンスタイプを変更した、新しく作成されたインスタンスを起動します。
+  `approvalForCreatingImageAfterDriversInstallation` - インスタンスが Nitro インスタンスタイプとして正常に起動すると、自動化は必要なプリンシパルからの承認を待ちます。承認が与えられると、ゴールデン AMI として使用するための AMI が作成されます。
+  `createImageAfterDriversInstallation` - ゴールデン AMI として使用される AMI を作成します。
+  `endOfCloneAndMigrateBranch` - Clone&Migrate 分岐の終了。
+  `cleanupTestImage` - テスト用に作成された AMI の登録を解除します。
+  `failureHandling` - 障害発生時にリソースを終了するように選択したかどうかをチェックします。
+  `onFailureTerminateClonedInstance` - 自動化に失敗した場合、新しく作成されたインスタンスを終了します。
+  `onFailurecleanupTestImage` - テスト用に作成された AMI の登録を解除します。
+  `onFailureApprovalToStartTargetInstance` - 自動化に失敗した場合、指定されたプリンシパルからの承認を待ってターゲットインスタンスを起動します。
+  `onFailureStartTargetInstance` - 自動化が失敗した場合、ターゲットインスタンスを起動します。

## FullMigration のワークフロー
<a name="full-migration"></a>

**必要な IAM アクセス許可**

`AutomationAssumeRole` パラメータでは、ランブックを正常に使用するために、次のアクションが必要です。
+  `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` - 指定した Amazon EC2 インスタンスをターゲットとするこのランブックの自動化が 1 つしかないことを確認します。同じインスタンスをターゲットとする別の自動化が進行中であることをランブックが検知した場合、その自動化は終了します。
+  `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` - 前のステップで失敗した場合、ターゲットインスタンスは強制停止されます。
+  `stopClonedInstanceForRootVolumeReplacement` - Amazon EBS ボリュームを置き換える前に、新しく作成されたインスタンスを停止します。
+  `forceStopClonedInstanceForRootVolumeReplacement` - 前のステップが失敗した場合、新しく作成されたインスタンスを強制停止します。
+  `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` - ターゲットインスタンスが Nitro インスタンスタイプとして起動できない場合、ターゲット Amazon EC2 インスタンスを元のインスタンスタイプに戻します。
+  `onFailureRollbackRootVolumeReplacement` - 必要に応じて、`replaceRootEbsVolumes` ステップで行った変更をすべて元に戻します。
+  `onFailureApprovalToStartTargetInstance` - 指定されたプリンシパルの承認を待って、以前の変更をロールバックした後、ターゲット Amazon EC2 インスタンスを起動します。
+  `onFailureStartTargetInstance` - ターゲットの Amazon EC2 インスタンスを開始します。
+  `terminateClonedEC2Instance` - ルート Amazon EBS ボリュームを置き換えた後、クローンされた Amazon EC2 インスタンスを終了します。