AWS EC2からOCIコンピュートに移行してみる - その1（Oracle Cloud Migrations）

OCIのOracle Cloud Migrations（クラウド移行サービス）はVMware上の仮想マシンをOCIの仮想マシンに移行することが可能なサービスとして2022年9月にリリースされました。VMwareからの移行を試してみた記事は[こちら](https://qiita.com/tkonishi/items/d8ef1aaf055a68dca1d9)(実施時点の情報となり最新情報とは異なる部分もありますのでご注意ください)。

このOracle Cloud Migrationsが、先日、[AWS EC2からの移行にも対応](https://docs.oracle.com/ja-jp/iaas/releasenotes/cloud-migration/ocm_aws_ec2_instance_migration.htm)しました！これによって、VMwareとAWS EC2という2つのソース環境に対応しました。

さっそくですが、AWS EC2のインスタンスをOCIのコンピュートのVMインスタンスに移行してみたいと思います！

以前VMwareからの移行を試した際には事前準備や構築に工数がかかった記憶もあるので、まずは[ドキュメント](https://docs.oracle.com/ja-jp/iaas/Content/cloud-migration/cloud-migration-overview.htm)をざっと読んで流れを把握しておきます。

おおまかな流れはこちらが参考になります。

- [Oracle Cloud Migrations Serviceの使用- AWS](https://docs.oracle.com/ja-jp/iaas/Content/cloud-migration/cloud-migration-get-started.htm#using_the_oracle_cloud_migrations_service_aws)

VMwareからの移行の場合はエージェントになるアプライアンスをVMware上に構築する必要がありましたが、AWS EC2の場合はエージェントレスで動作できるようです！

比較してみるとわかりますが、「アセットの管理」の部分のステップが大幅に削減されていて、最初からアセット・ソースの作成をスタートできるようです。とはいえ要件の確認や準備は必要なので、実施する際にはしっかりとドキュメントを確認しながら進めていきましょう。



# 0. 事前準備

移行元と移行先の準備をしていきます。

## AWSアカウントを準備

移行元のAWSのアカウントを用意します。この記事ではAWSアカウントの作成については省略します。

## OCI コンパートメントやIAMポリシーの設定、ボールトの準備

「前提条件の作成」の機能でterraformによって自動的にコンパートメントやタグ、ポリシーの作成を行わせることも可能ですが、今回は私は各ポリシーの内容なども確認しながら進めたかったこともあったので手動で設定していきました。

ただし、「前提条件の作成」を利用したほうが作業としては簡単で抜け漏れがないのでお勧めです。その場合は以下のドキュメントに従って実施してください。

- [必要な移行前提条件のデプロイ](https://docs.oracle.com/ja-jp/iaas/Content/cloud-migration/cloud-migration-deploy-overview.htm)

![image-20241024095254878.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/36caa616-10b7-faef-cf35-81ae451a5bb0.png)



手動で構成する場合は、

- **以下2ページに記載されているポリシーをすべて適切に設定します**。かなり量が多いので、抜け漏れがないように注意します。

  - ユーザに対するポリシー設定
    - https://docs.oracle.com/ja-jp/iaas/Content/cloud-migration/cloud-migration-userpolicies-aws.htm

  - サービスに対するポリシー設定
    - https://docs.oracle.com/ja-jp/iaas/Content/cloud-migration/cloud-migration-servicepolicies-aws.htm
  - 注意）rootコンパートメントに配置しなくてはいけないポリシーもいくつかある。（in tenancyで設定するポリシーと、OCMサービステナンシに対するクロステナンシのポリシー。）

- **資格証明を保管するために必要なボールト**はあらかじめ作成しておきます。

- **レプリケーションに使用するオブジェクト・ストレージのバケット**はあらかじめ作成しておきます。

- **移行先のインスタンスを配置するVCNやサブネット**も用意しておきましょう。



# 1. 移行元インスタンスの準備

AWS側でEC2のインスタンスを用意します。私はAWSの操作には不慣れなのでやや心配でしたが、デフォルトの構成ですぐに作成することができました！

本記事ではEC2作成手順は割愛しますが、今回は無償で利用できると書かれていた、バージニア北部(us-east-1)リージョンのt2.microのインスタンスタイプ、Red Hat Enterprise LinuxのAMIを利用してみました。インターネットからsshでログインできるようにパブリック・サブネットに配置してグローバルIPも振っておきます。

そのほか、Oracle Cloud Migrationsでサポートされている移行元環境については以下のドキュメントを参照してください。

- [Oracle Cloud Migrationsを使用するための仕様](https://docs.oracle.com/ja-jp/iaas/Content/cloud-migration/cloud-migration-requirements-specifications.htm)



# 2. アセット・ソースを作成する

それではさっそく、OCIコンソールから移行元となるアセット・ソースを作成していきます。

1. OCIコンソールのメニュー「移行とディザスタ・リカバリ」→「クラウド移行」をクリックします。
   ![image-20241024102244262.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/ca8e73d6-1f74-7bf6-921d-018ba4c2e288.png)
2. 左側のメニューから「検出」をクリックします。
   ![image-20241024102446303.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/bbdb7fc8-fda4-8114-318a-5109e1bdfa46.png)
3. アセット・ソースの画面で「アセット・ソースの作成」をクリックします。（初回実行時はインベントリの作成のため少し時間がかかるかもしれません。）
   ![image-20241024102559807.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/5cc255c0-66a6-8fa1-58ac-83a73cf7610f.png)
4. アセットソースの作成画面で以下を入力し、「アセット・ソースの作成」をクリックします。
   1. アセット・ソース・タイプ：AWS
   2. アセットソース情報
      - 名前：任意の名前。
      - アカウントID：0.事前準備で用意しておいた**AWSのアカウントID**を入力します。
      - リージョン：AWSの移行元となるインスタンスが存在するリージョンを指定します。ここではus-east-1です。
      - コンパートメント：アセット・ソースを作成するコンパートメントを指定します。
      - ターゲット・コンパートメント：ターゲットのリソースを作成するコンパートメントを指定します。![image-20241024103020667.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/ed95ebef-21e9-061b-0a49-a0119dde8b8f.png)
      - リモート接続ソース環境：「新規作成」を選択し、任意の名前を入力します。
        ![image-20241024103300896.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/543a9a3e-923d-96b1-39ff-347ffe751947.png)
      - 検出資格証明：「シークレットの作成」を選択し、以下の項目を入力していきます。
        - 名前：任意の名前
        - 説明：任意
        - コンパートメント：資格証明のボールト用のコンパートメント
        - <コンパートメント名>のボールト：あらかじめ用意してあるボールトを選択します。
        - <コンパートメント名>のマスター暗号化キー：あらかじめ対象のボールト用に用意してあるマスター暗号化キーを選択します。
        - アクセス・キーID：以下に示す手順で取得した**アクセス・キー**を入力します。
        - シークレット・アクセスキー：以下に示す手順で取得した**シークレット・アクセスキー**を入力します。![image-20241024103515713.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/f0a28972-efcf-80b6-d049-a5da798391ac.png)
        - アクセス・キーの取得方法
          1. AWSのポータルから、「セキュリティ認証情報」を開きます。
             ![image-20241024104004786.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/d7eadbdc-54bf-c73f-3394-3b2b96cd1d7a.png)
          2. 「アクセスキーの作成」をクリックします。
             ![image-20241024104042071.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/205673b9-9f28-470e-7f94-169cee42b40d.png)
          3. ルートユーザーでアクセスキーを作成することは推奨されていません。今回はこのテスト目的のインスタンスのみの環境で重要なデータなどは存在していないので続行します。![image-20241024104115963.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/136e08f7-ff33-2783-7760-202dcab6c443.png)
          4. アクセスキーとシークレットアクセスキーが取得できます。これをコピーしてさきほどの入力項目に入力します。![image-20241024104230883.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/4296a5ea-1097-65b9-706a-5f0da183dfad.png)
        - **注）通常ルートユーザーのアクセスキー利用は推奨されていません。実際の環境では適切な権限を持ったユーザーを用意するなどしてください。OCMの各ステップ実行に必要なAWS IAMの権限は以下のドキュメントに記載されていますので参照して適切に設定してください。**
          - [AWSソース環境](https://docs.oracle.com/ja-jp/iaas/Content/cloud-migration/cloud-migration-aws-credentials.htm)
      - レプリケーション資格証明オプション：先ほど検出で作成した資格証明と同じものを使っていきますので、**「検出資格証明の使用」を選択**します。
      - 検出スケジュール：今回はスケジュール実行は無しでのちほど手動で検出を行いますので、**「検出スケジュールなし」を選択**します。
        ![image-20241024105531261.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/1a01562b-b278-ff96-ee4d-d952af9a8d1f.png)
   3. すべて完了したら左下の「閉じる」をクリックします。
      ![image-20241024105816457.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/38a9495e-fd89-c962-3caa-f87f3cfe3066.png)
   4. アセット・ソースが作成はすぐに完了しました！
      ![image-20241024110004506.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/ff8357d3-411d-72fa-d9e7-0af10d123288.png)



# 3. アセットを検出する

続いて、アセット（移行対象にできるリソース）を検出していきます。

1. アセット・ソースのページから「検出の実行」をクリックします。
   ![image-20241024125434220.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/4018bce4-69a2-6204-c5f0-5df9041c6cc9.png)
2. 検出の実行にはしばらく時間がかかります。完了するまでしばらく待ちます。
   ![image-20241024125524554.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/bca9bd88-bb4e-ad41-ac57-7569ab72dc2c.png)
3. 検出が完了すると、リソースの「アセット」に検出されたアセットが表示されます。今回あらかじめ作成しておいた仮想マシンとボリュームが一つずつ検出されたので成功です。
   ![image-20241024125704902.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/87bbd2d7-4701-9877-e68b-847bd1713408.png)


# 4. 移行プロジェクトの作成

続いて移行プロジェクトを作成します。

1. OCIコンソールのメニューから「クラウド移行」→「移行プロジェクト」のページを開き、「移行プロジェクトの作成」をクリックします。
   ![image-20241024125942343.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/c6c04a09-75e1-ac34-59f4-3e2f8f5dd015.png)

2. 今回は初期移行プランも含めて一気に作成していきますので、「初期移行プランを使用して移行プロジェクトを作成します」を選択して作成していきます。
   ![image-20241024130019288.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/79b68b18-bc92-3a8e-349e-64354ef637e9.png)

3. 移行プロジェクトの作成画面の基本情報に以下の情報を入力して次に進みます。

   - 移行情報
     - 表示名：任意の名前
     - コンパートメント：対象のコンパートメント
   - レプリケーション・スケジュール：今回はスケジュール実行ではなく手動実行していくので「レプリケーション・スケジュールはありません」を選択します。![image-20241024130147801.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/757515b5-db78-2cbd-e899-debdec4fbf7a.png)

4. 続いて、アセットの画面で「OCMインベントリからの追加」をクリックします。
   ![image-20241024130406841.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/53d60a3a-3a61-345e-1f40-92dfab2d0d5d.png)

5. アセットを選択します。この環境には他のアセットも表示されてしまっていますが、検索で絞り込むことも可能です。
   ![image-20241024130442073.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/8c71bb51-16ed-e2d7-0d46-31f9810b1873.png)

6. assetTypeでAWS_EC2を検索すると対象はひとつだけ表示されました。このインスタンスを選択して「移行アセットの追加」をクリックし、次に進みます。
   ![image-20241024130542592.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/862d1e8f-b175-47c7-578c-e6badbd111e0.png)

7. レプリケーション位置として、オブジェクトストレージのバケットを選択します。あらかじめ用意しておいたバケットを選択し、選択済みの状態にして次に進みます。
   ![image-20241024130726101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/5dacc809-81f1-8ae3-b8cd-a34e3def012b.png)

8. 続いて初期移行プランも設定します。以下の情報を入力して次に進みます。

   - 初期移行プラン
     - 表示名：任意の名前
     - コンパートメント：対象のコンパートメント
     - 戦略：ここでは移行先のサイジングに関する戦略を決めることができます。今回はリソース・タイプは「デフォルト」のままで、戦略タイプは「現状維持」を選択しました。![image-20241024130829633.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/006c8ac7-b878-8416-4351-d8cc886e1b5f.png)
   - ターゲット環境
     - 環境タイプ：「システム推奨」の使用を選択しました。特定のシェイプの希望があれば選択することもできます。
     - VCN：移行先のインスタンスを配置するVCNを選択します。
     - サブネット：移行先のインスタンスを配置するサブネットを選択します。
     - 専用仮想マシン・ホスト：今回は特に使用しないので選択しません。![image-20241024131217620.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/905fb6e4-0d43-ec6e-834f-d91f9c102765.png)

9. 確認画面が表示されたら、左下の「送信」ボタンをクリックします。
   ![image-20241024131405924.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/585bdba7-e0a6-386c-5b5b-488dd64346ed.png)

   ![image-20241024131428598-1729743269472-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/a8c577fc-2a8e-5baa-c1db-ae61bb08cfc8.png)

10. 移行プランや移行アセットを含んだ移行プロジェクトが完成しました！
    ![image-20241024131509392.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524827/bfd3fd71-61fd-2652-267f-8cb7ea51d2ab.png)



さて、ここまででアセット・ソースや移行プロジェクトなどの設定が完了しました。ここからが最も気になる実際の移行作業の部分に入りますが、記事が長くなってきたので今日はいったんここまでにしたいと思います。

[次の記事](https://qiita.com/tkonishi/items/c7ed11722e759b235a06)で、レプリケーションとインスタンスの移行を試していきます！