仮想アプライアンスは、仮想マシン(VM)インスタンスのディスク イメージとハードウェア構成を含むパッケージです。
広く使用されている仮想アプライアンスの形式は OVF 形式です。仮想アプライアンスを OVF 形式でパッケージ化すると、OVF パッケージが生成されます。OVF パッケージは、.ovf
記述子ファイルや、ディスクなどの他のリソースのコレクションを格納するフォルダです。OVF パッケージを 1 つのファイルにアーカイブしたものを OVA ファイルといいます。
このページでは、Compute Engine を使用して仮想アプライアンスからマシンイメージをインポートする手順について説明します。
始める前に
- プロジェクトで VM Migration API を有効にします。
- ブートディスクがサポートされているオペレーティング システムで構成されていることを確認します。
サポートされているファイル形式
Compute Engine を使用して、次の形式のマシンイメージ ファイルをインポートできます。
- Open Virtualization Format(OVF): 同じバケット内の OVF ファイルと仮想マシンディスク(VMDK)ファイル。
- Open Virtual Appliance(OVA): OVF ファイルと VMDK ファイルを含む 1 つの OVA ファイル。
マシンイメージのインポート プロセス
Compute Engine を使用してマシンイメージを Compute Engine マシンイメージにインポートするには、次の操作を行います。
インポートするマシンファイルを準備する
マシンイメージを Compute Engine イメージにインポートするには、まず、インポートするマシンイメージ ファイルを準備する必要があります。以降のセクションでは、これらのタスクについて詳しく説明します。
マシンイメージ ファイルを Cloud Storage に追加する
マシンイメージを Compute Engine マシンイメージにインポートするには、まずマシンイメージ ファイルを Cloud Storage に追加する必要があります。詳細については、ファイル システムからオブジェクトをアップロードするをご覧ください。パフォーマンスを向上させるため、マシンイメージを作成する Google Cloud 内のバケットにマシンイメージ ファイルをアップロードすることをおすすめします。
必要な権限を付与する
マシンイメージを Compute Engine マシンイメージにインポートするには、次の表の説明に従って権限を付与します。
ロール | 必要な権限 | 説明 |
---|---|---|
ストレージ オブジェクト閲覧者 | roles/storage.objectViewer |
ホスト プロジェクト(service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com )のデフォルトの Migrate to Virtual Machines サービス アカウントに、インポートするイメージが存在するバケットに対する roles/vmmigration.serviceAgent ロールを付与します。この権限により、Migrate to Virtual Machines がソースイメージにアクセスできるようになります。 |
VM Migration 管理者 | roles/vmmigration.admin |
ホスト プロジェクトで、ソースイメージのインポートに使用するユーザー アカウントに roles/vmmigration.admin ロールを付与します。 |
VM Migration サービス アカウント | roles/vmmigration.serviceAgent |
ホスト プロジェクト(service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com )のデフォルトの Migrate to Virtual Machines サービス アカウントに、ターゲット プロジェクトに対する roles/vmmigration.serviceAgent ロールを付与します。たとえば、service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com がホスト プロジェクトの Migrate to Virtual Machines サービス アカウントである場合、ターゲット プロジェクトでイメージを作成できるように、このサービス アカウントに roles/vmmigration.serviceAgent ロールを付与する必要があります。 |
ターゲット プロジェクトを選択する
マシンイメージをホストするには、ターゲット プロジェクトを作成または選択する必要があります。ターゲット プロジェクトは、マシンイメージの宛先プロジェクトを定義します。ターゲット プロジェクトの作成または選択の詳細については、ターゲット プロジェクトの追加をご覧ください。
マシンイメージを Compute Engine にインポートする
マシンイメージを Compute Engine にインポートするには、Google Cloud CLI または REST API コマンドを使用します。
マシンイメージをインポートすると、Compute Engine はターゲット プロジェクトに一時的なリソース(VM やディスクなど)を作成します。これらの一時リソースは、マシンイメージのインポート プロセスが完了すると削除されます。
gcloud
Google Cloud CLI を使用してマシンイメージを Compute Engine にインポートするには、次のリクエストを使用します。
gcloud alpha migration vms machine-image-imports create IMAGE_NAME \ --source-file=SOURCE_FILE \ --location=REGION_ID \ --target-project=projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
次のように置き換えます。
IMAGE_NAME
: 作成するマシンイメージの名前。命名ルールの詳細については、命名規則をご覧ください。SOURCE_FILE
: マシンイメージのインポート元となるファイル。パスは gs://bucket/folder/file の形式で入力します。バケット内のオブジェクトのパスを取得するには、オブジェクトのメタデータを表示するをご覧ください。イメージは、.ovf
ファイルと.ova
ファイルからのみインポートできます。REGION_ID
: マシンイメージのインポート プロセスを実行するリージョン。マシンイメージは最も近いマルチリージョンに作成されます。リージョンでマシンイメージを作成する場合は、singleRegionStorage
が true に設定されていることを確認してください。サポートされているリージョンのリストについては、リージョンとゾーンをご覧ください。HOST_PROJECT_ID
: マシンイメージを移行するホスト プロジェクトの名前。TARGET_PROJECT
: マシンイメージを作成するターゲット プロジェクト。ターゲット プロジェクトをまだ追加していない場合は、ターゲット プロジェクトを追加するの手順に沿って追加してください。REGION_ID
: マシンイメージのインポート プロセスを実行するリージョン。マシンイメージは最も近いマルチリージョンに作成されます。リージョンでマシンイメージを作成する場合は、singleRegionStorage
が true に設定されていることを確認してください。サポートされているリージョンのリストについては、リージョンとゾーンをご覧ください。
詳しくは、gcloud migration vms image-imports
をご覧ください。
REST API
REST API を使用してマシンイメージを Compute Engine にインポートするには、次の操作を行います。
次のリクエストを使用して、マシンイメージのインポート リソースを作成します。
POST https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports?imageImportId=IMPORT_NAME { "cloudStorageUri": "SOURCE_FILE", "machineImageTargetDefaults": { "imageName": "IMAGE_NAME", "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT", ... } }
次のように置き換えます。
HOST_PROJECT_ID
: マシンイメージを移行するホスト プロジェクトの名前。REGION_ID
: マシンイメージのインポート プロセスを実行するリージョン。マシンイメージは最も近いマルチリージョンに作成されます。リージョンでマシンイメージを作成する場合は、singleRegionStorage
が true に設定されていることを確認してください。サポートされているリージョンのリストについては、リージョンとゾーンをご覧ください。SOURCE_FILE
: マシンイメージのインポート元となるファイル。パスは gs://bucket/folder/file の形式で入力します。バケット内のオブジェクトのパスを取得するには、オブジェクトのメタデータを表示するをご覧ください。マシンイメージは、.ova
ファイルと.ovf
ファイルからのみインポートできます。IMAGE_NAME
: 作成するマシンイメージの名前。命名ルールの詳細については、命名規則をご覧ください。TARGET_PROJECT
: マシンイメージを作成するターゲット プロジェクト。ターゲット プロジェクトをまだ追加していない場合は、ターゲット プロジェクトを追加するの手順に沿って追加してください。
この例では、
IMPORT_NAME
がイメージ インポート リソースを表す ID です。Compute Engine にマシンイメージをインポートすると、Migrate to Virtual Machines はまずマシンイメージのインポート リソースを作成します。マシンイメージのインポート リソースは、マシンイメージのインポート プロセスを表します。IMPORT_NAME
を使用すると、マシンイメージのインポート プロセスの一環として、インポートされたマシンイメージへのリンクを取得できます。サポートされているイメージ インポート作成リクエストのフィールドについては、次の表をご覧ください。
フィールド名 説明 cloudStorageUri
マシンイメージのインポート元となるファイルのパス。パスは gs://bucket/folder/file の形式で入力します。バケット内のオブジェクトのパスを取得するには、オブジェクトのメタデータを表示するをご覧ください。
マシンイメージは、.ovf
ファイルと.ova
ファイルからのみインポートできます。machineImageTargetDefaults.targetProject
イメージを作成するターゲット プロジェクト。詳細については、ターゲット プロジェクトの API リファレンスをご覧ください。例:
projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
この例では、次のように置き換えます。HOST_PROJECT_ID
: マシンイメージを移行するホスト プロジェクトの名前。TARGET_PROJECT
: イメージを作成するターゲット プロジェクト。
machineImageTargetDefaults.machine_image_name
作成するマシンイメージの名前。命名規則について詳しくは、リソースの命名規則をご覧ください。 machineImageTargetDefaults.description
(省略可)マシンイメージの説明。 machineImageTargetDefaults.machine_type
(省略可)マシンイメージを作成するマシン。マシンタイプを指定しない場合、Compute Engine は、ソース マシンイメージの情報に基づいて関連するマシンタイプを選択します。 machineImageTargetDefaults.labels
プロジェクトを整理するには、ラベルを Key-Value ペアとしてリソースに追加します。リソースのラベル付けをご覧ください。 machineImageTargetDefaults.tags
マシンイメージに適用するタグを追加します。リソースのタグを管理するをご覧ください。 machineImageTargetDefaults.additionalLicenses
インポートしたマシンイメージから作成された VM インスタンスに、有効な URL 形式を使用して最大 10 個のライセンスを追加できます。たとえば、次の URL 形式を使用してライセンスを追加できます。 https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
machineImageTargetDefaults.service_account
マシンイメージで使用されるターゲット プロジェクトのサービス アカウントを指定します。デフォルトでは、マシンイメージにサービス アカウントは割り当てられていません。
マシンイメージから Compute Engine インスタンスを作成し、そこでアプリケーションを実行する場合は、インスタンスで他の gcloud CLI サービスや API へのアクセスが必要になる場合があります。Compute Engine インスタンスを作成する前に、これらのサービスや API にアクセスするために必要な権限を持つターゲット プロジェクトでサービス アカウントを作成します。そのサービス アカウントをここに指定します。詳細については、サービス アカウントとして実行するよう VM を設定するをご覧ください。
サービス アカウントを Compute Engine インスタンスに接続するには、Compute Engine ホスト プロジェクトのユーザー アカウントに必要な権限が必要です。詳細については、ターゲット プロジェクトのサービス アカウントの権限の構成をご覧ください。machineImageTargetDefaults.shielded_instance_config
(省略可)このインスタンスで Shielded VM を有効にします。Shielded VM は、ルートキットやブートキットによる攻撃を防ぐ一連のセキュリティ制御により強化されています。Shielded VM とはをご覧ください。 machineImageTargetDefaults.singleRegionStorage
マシンイメージ storageLocations
をリージョンにする場合は、このフラグを true に設定します。このフラグを false に設定すると、最も近いマルチリージョンが選択されます。machineImageTargetDefaults.skip_os_adaptation
OS 適応をスキップする場合は、このフラグを true に設定します。
Google Cloud で正しく機能させるには、インポートしたマシンイメージから作成された VM の構成を変更する必要があります。このような変更は OS 適応と呼ばれます。Compute Engine は、マシンイメージのインポート プロセスで OS 適応を自動的に実行します。詳細については、Google Cloud で実行するように VM インスタンスを適応させるをご覧ください。machineImageTargetDefaults.osAdaptationParameters.licenseType
マシンイメージに使用するライセンス タイプ。Compute Engine は、デプロイされる VM に従量課金制(PAYG)ライセンスとお客様所有ライセンスの使用(BYOL)をサポートしています。サポートされているオペレーティング システムで説明されているように、移行した VM のデフォルトのライセンス タイプは、移行したオペレーティング システムに基づいて Compute Engine によって割り当てられます。
オペレーティング システムが複数のライセンス タイプをサポートしている場合は、デフォルトのライセンス タイプをオーバーライドして、PAYG または BYOL のライセンス タイプを明示的に指定できます。
machineImageTargetDefaults.osAdaptationParameters.network_interfaces
Compute Engine では、必要に応じて複数のネットワーク インターフェース(NIC)を使用するマシンイメージを作成できます。各インターフェースを異なる VPC ネットワークに接続し、gcloud CLI の異なる VPC ネットワークに対してそのマシンイメージのアクセス権を付与します。
ネットワーク インターフェースを追加する前に、次の点に注意してください。
- 複数のネットワーク インターフェースを同じ VPC ネットワークに接続することはできません。構成は保存できますが、VM のインスタンス化は失敗します。
- Compute Engine インスタンスをマシンイメージからインスタンス化した後に、
test-clone
またはcut-over
を使用して、作成されたインスタンスでネットワーク インターフェースの追加または削除を行うことはできません。別のターゲットの詳細を使用してtest-clone
またはcut-over
を繰り返し、インスタンスを再作成できます。
ネットワーク インターフェースを追加または削除するには: - [ネットワーク インターフェースを追加] を選択して、Compute Engine インスタンスに別のネットワーク インターフェースを追加します。最初のネットワーク インターフェースと同じオプションを設定できます。
machineImageTargetDefaults.osAdaptationParameters.generalize
マシンイメージを一般化する場合は、このフラグを true に設定します。
マシンイメージからインスタンスを作成すると、Windows によって一意の情報がインスタンスに追加されます。一般化は、この情報を削除して、同じイメージから複数のインスタンスを作成できるようにするプロセスです。machineImageTargetDefaults.encryption
インポート プロセスでデータの暗号化に使用する Google 管理の暗号鍵。詳細については、デフォルトの保存データの暗号化をご覧ください。
顧客管理の暗号鍵(CMEK)を使用して、マシンイメージのデータを暗号化します。これらの暗号鍵は、ユーザーによって作成、管理、所有されます。詳細については、Cloud KMS 鍵を使用してリソースを保護するをご覧ください。
CMEK を追加する場合は、次の表に示す権限が必要になります。ロール 必要な権限 説明 Cloud VM Migration サービス アカウント roles/vmmigration.serviceAgent インポート プロセスで、作成されたイメージのデータを暗号化するには、この権限を Compute Engine サービス アカウントに付与します。 Compute Engine サービス エージェント roles/compute.serviceAgent インポート プロセスでデータを暗号化するには、この権限を Compute Engine サービス エージェントに付与します。 次のサンプルのようなレスポンスが表示されます。
{ "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID", "metadata": { "createTime": "2023-10-31T09:12:26.94928636Z", "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME", "verb": "create", "apiVersion": "v1", "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata" } }
次のコマンドを使用してオペレーションをポーリングし、マシンイメージのインポート ジョブが完了したかどうかを確認します。
GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID
次のように置き換えます。
HOST_PROJECT_ID
: マシンイメージの移行元のホスト プロジェクトの名前。REGION_ID
: マシンイメージのインポート プロセスを実行するリージョン。マシンイメージは最も近いマルチリージョンに作成されます。リージョンでマシンイメージを作成する場合は、singleRegionStorage
が true に設定されていることを確認してください。サポートされているリージョンのリストについては、リージョンとゾーンをご覧ください。OPERATION_ID
: 移行ジョブのオペレーション ID。
次のサンプルのようなオペレーション完了レスポンスが表示されます。
{ "done": true, "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID", "response": { "@type": "type.googleapis.com/google.cloud.vmmigration.v1.ImageImport", "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME", "cloudStorageUri": "SOURCE_FILE", "createTime": "2023-10-31T09:04:04.413664947Z", "machineImageTargetDefaults": { "imageName": "IMAGE_NAME", "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT" }, "recentImageImportJobs": [ { "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job", "diskImageTargetDetails": { "imageName": "IMAGE_NAME", "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT" }, "state": "PENDING" } ] }, "metadata": { "createTime": "2023-10-31T09:04:04.416740716Z", "endTime": "2023-10-31T09:05:36.79987142Z", "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME", "verb": "create", "apiVersion": "v1", "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata" } }
次のコマンドを使用して、マシンイメージのインポート ジョブの完了をモニタリングします。
GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports/IMPORT_NAME/imageImportJobs/image-import-job
次のように置き換えます。
HOST_PROJECT_ID
: マシンイメージの移行元のホスト プロジェクトの名前。REGION_ID
: マシンイメージのインポート プロセスを実行するリージョン。マシンイメージは最も近いマルチリージョンに作成されます。リージョンでマシンイメージを作成する場合は、singleRegionStorage
が true に設定されていることを確認してください。サポートされているリージョンのリストについては、リージョンとゾーンをご覧ください。IMPORT_NAME
: マシンイメージのインポート リソースを表す ID。Compute Engine にマシンイメージをインポートすると、Migrate to Virtual Machines はまずマシンイメージのインポート リソースを作成します。マシンイメージのインポート リソースは、マシンイメージのインポート プロセスを表します。IMPORT_NAME
を使用すると、マシンイメージのインポート プロセスの一環として、インポートされたマシンイメージへのリンクを取得できます。
次のサンプルのようなジョブ完了レスポンスが表示されます。
{ "createTime":"2023-10-31T09:12:27.053788394Z", "createdResources":[ "https://www.googleapis.com/compute/v1/projects/USER_PROJECT/global/images/IMAGE_NAME" ], "diskImageTargetDetails": { "imageName":"IMAGE_NAME", "targetProject":"projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT" }, "endTime":"2023-10-31T09:16:50.224865783Z", "name":"projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job", "state":"SUCCEEDED" }