tofdinoの日々

SIerのSEが学んだことをアウトプットをする場所

VM移行ツールのMigrate for Compute Engineを使ってみる

概要

本記事ではGCPのMigrate for Compute Engineを使って、AWSからGCPへのVMの移行を行います。ツールの詳細な動きなどには踏み込みません。
なお、下記参考資料とほとんど同じ内容です。

参考資料
GCPのVMマイグレーションツールを試してみた (AWS to GCP) | by Shohei Okada | google-cloud-jp | Medium

Migrate for Compute Engineとは

Migrate for Compute Engineについての詳しい解説は公式と参考資料を参照してください。

公式
Migrate for Compute Engine - GCP 用 Cloud Migration ソフトウェア

参考資料 GCPのマイグレーション方法についてまとめてみた. この記事は Google Cloud Japan Customer… | by Shohei Okada | google-cloud-jp | Medium ← おすすめ

環境

Migrate for Compute Engine ver4.9

手順

公式 Overview of migrating from AWS to GCP

STEP1:サービスアカウントとロールを作成する

Migrate for Compute EngineがGCPのリソースを作成とCloud Storage APIの管理に使用できるロールとサービスアカウントを作成します。

1. Cloud Shellを開く

2. ディレクトリを移動しスクリプトを実行する

# 通常は/google/migrate/gceディレクトリまで移動
# バージョンのアップデートタイミング次第ではprevious-versions配下の各バージョンまで移動
$ cd /google/migrate/gce/previous-versions/4.9 
$ python3 velostrata_sa_roles.py -p [プロジェクト名] -d [デプロイメント名]

f:id:tofdino:20200612162212p:plain 公式
https://cloud.google.com/migrate/compute-engine/docs/4.10/how-to/configuring-gcp/configuring-gcp#creating_roles_and_service_accounts_via_cloud_shell

STEP2:AWSGCP間のVPNを設定する

Automated Network Deployment: Building a VPN Between GCP and AWS with Terraformを参考にしてVPN接続を確率する

STEP3:ファイアーウォールの設定

Network access requirementsを参考にファイアーウォールの設定をする

STEP4:Migrate for Compute Engineをデプロイする

1: marketplaceからMigrate for Compute Engineを検索し起動する

2: CREATE MANAGERからMANAGERを作成する

f:id:tofdino:20200616155731p:plain

注意点:
* ネットワークタグはSTEP3で作成したManagerのタグを設定する
* サービスアカウント設定する時、STEP1で作成したManagerとExtention用の物を設定する
* パスワードはManagerのGCEを編集する時みえるので、普段使用しないパスワードを使う
* なぜかロールが足りないので、サービスアカウントにロールを追加する f:id:tofdino:20200616162421p:plain

ロール追加

# Managerのサービスアカウント: velos-manager-hoge
# Managerのサービスアカウントにroles/cloudmigration.inframanagerを追加
gcloud projects add-iam-policy-binding [プロジェクト名] \
--member serviceAccount:velos-manager-hoge@[プロジェクト名].iam.gserviceaccount.com \
--role roles/cloudmigration.inframanager
# Managerのサービスアカウントにroles/cloudmigration.storageaccessを追加
gcloud projects add-iam-policy-binding [プロジェクト名] \
--member serviceAccount:velos-manager-hoge@[プロジェクト名].iam.gserviceaccount.com \
--role roles/cloudmigration.storageaccess

# Extensionのサービスアカウント: velos-cloud-extension-hoge
# Extensionのサービスアカウントにroles/cloudmigration.storageaccessを追加
gcloud projects add-iam-policy-binding [プロジェクト名] \
--member serviceAccount:velos-cloud-extension-hoge@[プロジェクト名].iam.gserviceaccount.com \
--role roles/cloudmigration.storageaccess

3: 外部IPからマイグレーションのコンソールを開く

f:id:tofdino:20200616170625p:plain
もし下のような画面が出たら、そこでthisisunsafeとタイプする f:id:tofdino:20200616172039p:plain
ユーザー名: apiuser
パスワード: マネージャー作成時に設定したもの

これでMigrationのコンソール画面が開くことができる
ログ保存等の設定画面は後で変更できるのでスキップします。

STEP5:Cloud FormationでAWSに権限を付与する

1.CloudFormation スタックのjsonをダウンロードする。

Migrate for Compute Engine Downloads

2. AWSのCloud Formationで新しいリソースを作成(標準)からjsonでスタックを作成する

f:id:tofdino:20200616175039p:plain 作成完了 f:id:tofdino:20200616175114p:plain

STEP6:AWS IAM認証情報を作成して、認証情報をアップロードする

1. SOURCE CLOUDからCloud Credentialsを作成する

トップ画面 f:id:tofdino:20200616175518p:plain
Cloud CredentialsのCreateで認証を作成する f:id:tofdino:20200616193457p:plain

Configure AWS as a sourceを参考に情報を入力する

2. Cloud Detailsを作成する

f:id:tofdino:20200616193654p:plain こちらも Configure AWS as a sourceを参考に情報を入力する

STEP7:Cloud Extensionsを作成する

1. TARGET CLOUDを選択する

f:id:tofdino:20200616202757p:plain

2. Extensionsを作成する

Setting up Cloud Extensionsを参考に情報を入力する。 f:id:tofdino:20200616204153p:plain
f:id:tofdino:20200616204349p:plain
f:id:tofdino:20200616204405p:plain

GCPコンソール画面からも作成したものが確認できます。

STEP8:Linux VMを準備する

1. AWSにEC2インスタンス(Amazon Linux)を作成します。(移行元)

2. Amazon Linuxの手順通りオフライン移行の実行に移ります。

Preparing Linux VMs  |  Migrate for Compute Engine (formerly Velostrata)を参考に先にオフライン移行を行います。

STEP9:移行開始

1.Runbookの作成

MIGRATION WAVESをからGenerate Runbookでランブックを作成します。 f:id:tofdino:20200616211245p:plain VMを識別するために、タグはなんでもいいので、移行元のEC2につけることをおすすめします。 f:id:tofdino:20200616211333p:plain CSVファイルがダウンロードされます。
f:id:tofdino:20200616211651p:plain

2.Runbookの編集

Runbook referenceを参考に編集していきます。
今回は最低限↓の設定をします

  • RunGroupを1に設定
  • TargetInstanceTypeにn1-standard-1を設定
  • GcpProjectにGCPのプロジェクトIDを設定

3.Waveの作成

New Waveから編集したRunbookをアップロードします f:id:tofdino:20200616214843p:plain Validateを実行します
f:id:tofdino:20200616220433p:plain Validate StatusがPassedになったらOKです。

4. ジョブを作成します

f:id:tofdino:20200616220928p:plain
オフラインマイグレーションを指定してStartします f:id:tofdino:20200616220946p:plain

StatusがSuccessになったら完了です。

Amazon Linuxの手順通りに、最後にGCEインスタンスにエージェントをインストールします。

まとめ

Migrate for Compute Engine使用する中で大変なところはファイアーウォールなどのネットワーク要件を適切に設定することです。ここを乗り越えればあとはMigrate for Compute Engineがよしなにしてくれます。
GCPが用意したスクリプトでサービスアカウントのロールが足りないのはなぜなのか、、、
後半モチベーションがなくなり失速気味なのでいつか直します。。。