仮想アプライアンスは、仮想マシン(VM)インスタンスのディスク イメージとハードウェア構成を含むパッケージです。
広く使用されている仮想アプライアンスの形式は OVF 形式です。仮想アプライアンスを OVF 形式でパッケージ化すると、OVF パッケージが生成されます。OVF パッケージは、.ovf
記述子ファイルや、ディスクなどの他のリソースのコレクションを格納するフォルダです。OVF パッケージを 1 つのファイルにアーカイブしたものを OVA ファイルといいます。
OVF パッケージまたは OVA 単一ファイルのどちらにある場合でも、OVF 形式の VM を Compute Engine にインポートできます。仮想アプライアンスの使用がユースケースに最適かどうかチェックするには、移行パスを選択するを確認します。
仮想アプライアンスをインポートすると、記述子ファイルに保存されている情報に基づいて Compute Engine に VM が作成され、起動します。
Compute Engine では、次のように OVA ファイルまたは OVF ファイルをインポートできます。
- 仮想アプライアンスをインスタンスとしてインポートします。OVA ファイルのインポートと OVF ファイルのインポートをご覧ください。
- 仮想アプライアンスをマシンイメージとしてインポートします。仮想アプライアンスからマシンイメージをインポートするをご覧ください。
始める前に
- 仮想アプライアンスをインポートするプロジェクトに信頼できるイメージのポリシーが定義されている場合は、パブリッシャーの許可リストに
projects/compute-image-import
とprojects/compute-image-tools
を追加します。 - 別のプロジェクトから仮想アプライアンスをインポートする場合は、プロジェクト間でのインポートをご覧ください。
- イメージをインポートする前に要件を満たす方法については、VM イメージのインポートとエクスポートの前提条件をご覧ください。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
要件
このセクションでは、仮想アプライアンスを Compute Engine にインポートするための要件について説明します。
ソース VM の要件
OVF ファイルの作成に使用する VM は、次の要件を満たす必要があります。
- 仮想ディスクは VMDK または VHD 形式である必要があります。
仮想ディスクは暗号化しないでください。
VM が要件を満たしていることを確認するには、事前チェックツールを実行します。
ソース VM のオペレーティング システムは、次の要件を満たす必要があります。
- Windows オペレーティング システムの場合、PowerShell バージョン 3 以降がインストールされている必要があります。バージョン 3.0 より前の PowerShell では、インポート処理中に起動スクリプトとシャットダウン スクリプトに問題が発生する可能性があります。
すべての Linux ディストリビューションで、ブートディスクが次の要件を満たしている必要があります。
- ブートディスクに GRUB がインストールされている必要があります。
- ブートディスクは複数の物理ディスクにまたがることはできません。論理ボリューム マネージャー(LVM)でパーティション分割されたディスクはサポートされていません。ディスクが複数の物理ディスクにまたがっている場合、OVF ファイルから作成された VM が Compute Engine で起動しないことがあります。
OVF ファイルの要件
OVF ファイルは、次の要件を満たしている必要があります。
- OVF ファイルは、OVF 仕様書に記載されている
Level 1
ポータビリティを提供する必要があります。Level 2
ポータビリティの仮想アプライアンスはインポートできますが、ソース ハイパーバイザ固有の詳細など、カスタム拡張はインポート時に無視されます。 - OVF ファイルに含める仮想マシンは、1 つのみにする必要があります。複数の仮想マシンが存在する場合は、最初の仮想マシンのみがインポートされます。
- OVF ファイルの最初のディスクは起動可能にする必要があります。
権限
イメージをシームレスにインポートするには、必要な IAM ロールをアカウント、Cloud Build サービス アカウント、Compute Engine サービス アカウントに付与する必要があります。詳細については、必要な IAM ロールを付与するをご覧ください。
インポート ツールでインポートされる構成
OVF 規格では、仮想化プロバイダに依存しない方法で仮想アプライアンスをパッケージ化するためのプロセスが指定されています。OVF 仮想アプライアンス パッケージには、1 つの .ovf
記述子ファイルと、仮想ディスクなどの他のリソースのコレクションが含まれています。
OVF 仮想アプライアンスを Compute Engine にインポートすると、記述子ファイルの次の構成が処理され、インポートされます。
- OVF パッケージの
DiskSection
要素から取得された仮想ディスクの情報。 OVF パッケージの
ResourceAllocationSection
から取得された CPU およびメモリ。CPU またはメモリの構成が Compute Engine のサポート範囲を超えている場合、インポート プロセスはその値を Compute Engine でサポートされる最大値に設定します。
OVF パッケージの
BootDeviceSection
要素から取得されたブートディスクの詳細。OVF パッケージの
OperatingSystemSection
要素から取得されたゲスト OS の詳細。ゲスト OS の情報は、インポートされたインスタンスに正しいドライバとゲスト環境パッケージをインストールするために使用されます。OVF 内のゲスト OS 情報が正しくない場合、インポートは失敗します。ゲスト OS 情報をオーバーライドするには、
--os
フラグを使用します。
インポートされた VM には、1 つの外部 IP アドレスを持つ単一のネットワーク アダプタが作成されます。OVF ファイルで指定されたネットワーク構成に関係なく、このネットワーク アダプタが使用されます。外部 IP アドレスを持たない VM をインポートするには、外部 IP アドレスを持たない VM のインポートをご覧ください。
仮想アプライアンスをインポートするときに、記述子ファイルの次のセクションは無視されます(インポートされません)。
NetworkSection
AnnotationSection
ProductSection
EulaSection
StartupSection
DeploymentOptionSection
InstallSection
EnvironmentFilesSection
SharedDiskSection
ScaleOutSection
PlacementGroupSection
PlacementSection
EncryptionSection
制限事項
この機能は、VPC Service Controls で保護されているプロジェクトではサポートされていません。
サポートされているオペレーティング システム
必要に応じて、記述子ファイルの OperatingSystemSection
要素でオペレーティング システムを指定できます。また、gcloud compute instances import
コマンドを使用して仮想アプライアンスをインポートする際に --os
フラグを指定することもできます。
サポートされているオペレーティング システムについては、オペレーティング システムの詳細をご覧ください。
BYOL と BYOS のサポート
デフォルトでは、Windows サーバーおよび Red Hat Enterprise Linux(RHEL)オペレーティング システムを使用する OVF ファイルがインポートされ、追加料金が発生するプレミアム OS のオンデマンド課金を使用するよう構成されます。
所有しているソフトウェア ライセンスまたはサブスクリプションを使用する場合は、それらのライセンスで仮想アプライアンスをインポートできます。BYOL または BYOS をサポートするオペレーティング システムについては、オペレーティング システムの詳細をご覧ください。
--byol
フラグを指定して gcloud compute instances import
コマンドを使用すると、アプライアンスを BYOL ライセンス アプライアンスとしてインポートできます。OS を手動で指定する場合は、--os
フラグを使用して、インポートするゲスト OS の byol
サフィックスを含む値を指定します。たとえば、--os=rhel-8-byol
は既存のライセンスを持つ RHEL 8 イメージをインポートします。
プロジェクト間でのインポート
- ソース プロジェクト: OVA または OVF ファイルが保存されているプロジェクト。
- 宛先プロジェクト: VM またはマシンイメージを作成するプロジェクト。
ソースと宛先プロジェクトが異なる場合、宛先プロジェクト内のサービス アカウントは、ソース プロジェクトの Cloud Storage バケットにアクセスする必要があります。
プロジェクト間でインポートする手順は次のとおりです。
- ソース プロジェクトで Cloud Storage バケットを見つけます。
Cloud Storage バケットで、
roles/storage.objectViewer
を次のサービス アカウントに付与します。- 宛先プロジェクトの Cloud Build サービス アカウント: このサービス アカウントの形式は
DESTINATION_PROJECT_NUMBER@cloudbuild.gserviceaccount.com
です。 - 宛先プロジェクトの Compute Engine サービス アカウント: このサービス アカウントの形式は
DESTINATION_PROJECT_NUMBER-compute@developer.gserviceaccount.com
です。
DESTINATION_PROJECT_NUMBER
は、宛先プロジェクトのプロジェクト番号に置き換えます。Cloud Storage バケットへのアクセス権を付与する方法については、バケットレベルのポリシーにメンバーを追加するをご覧ください。
- 宛先プロジェクトの Cloud Build サービス アカウント: このサービス アカウントの形式は
仮想アプライアンスのインポート
仮想アプライアンスは、Google Cloud CLI または REST を使用してインポートできます。
OVA ファイルのインポート
gcloud
- 仮想アプライアンスを Cloud Storage にアップロードします。
Cloud Storage から Compute Engine に OVA ファイルをインポートするには、
gcloud compute instances import
コマンドを使用します。gcloud compute instances import VM_NAME \ --source-uri=gs:PATH_TO_OVA_FILE
次のように置き換えます。
VM_NAME
: 作成するインスタンスの名前。PATH_TO_OVA_FILE
: Cloud Storage 上の OVA ファイルへのパス。
例
たとえば、OVA ファイル
Ubuntu.ova
をインポートして、my-instance
という名前のインスタンスを作成するには、次のコマンドを実行します。gcloud compute instances import my-instance \ --source-uri=gs://my-bucket/Ubuntu.ova
OVF 記述子ファイル内のゲスト OS 情報が正しくない場合や、検出された OS をオーバーライドする場合は、
--os
フラグを追加してオペレーティング システムを指定できます。サポートされている値の一覧については、gcloud compute instances import
コマンドの--os
フラグ オプションをご覧ください。たとえば、OVA ファイル
Ubuntu.ova
をインポートして、Ubuntu 16.04 を実行するmy-instance
という名前のインスタンスを作成するには、次のコマンドを実行します。gcloud compute instances import my-instance \ --os=ubuntu-1604 --source-uri=gs://my-bucket/Ubuntu.ova
REST
仮想アプライアンスを Cloud Storage にアップロードします。
POST
リクエストを Cloud Build API に送信します。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-instance-names=VM_NAME", "-ovf-gcs-path=SOURCE_URI", "-zone=ZONE", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
次のように置き換えます。
PROJECT_ID
: OVA ファイルのインポート先にするプロジェクトのプロジェクト ID。VM_NAME
: 作成する仮想マシン インスタンスの名前(my-instance
など)。SOURCE_URI
: Cloud Storage に保管されている OVA ファイルの URI例:gs://my-bucket/my-instance.ova
ZONE
: VM インスタンスを作成するゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。
さらに
args
値を指定できます。「Compute Engine OVF import GitHub」ページのオプション フラグ セクションをご覧ください。レスポンスの例
次のレスポンスのサンプルは、返される出力に似ています。
{ "name": "operations/build/myproject-12345/operation-1578608233418", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": "3a2055bc-ccbd-4101-9434-d376b88b8940", "status": "QUEUED", "createTime": "2019-12-30T19:06:03.968694865Z", "steps": [ { "name": "gcr.io/compute-image-tools/gce_ovf_import:release", "env": [ "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940" ], "args": [ "-instance-names=my-instance", "-ovf-gcs-path=gs://my-bucket/my-instance.ova", "-zone=asia-northeast2", "-client-id=api", "-timeout": "7056s" ] } ], "timeout": "7200s", "projectId": "myproject-12345", "logsBucket": "gs://12345.cloudbuild-logs.googleusercontent.com", "options": { "logging": "LEGACY" }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=myproject-12345", "tags": [ "gce-ovf-import" ] } } }
ビルドをモニタリングするには、次のいずれかの方法を使用します。
- 返される
build-id
を使用して、projects.builds.get リクエストを実行します。 - 指定された
logUrl
でホストされているログを確認します。
OVF ファイルのインポート
gcloud
- 仮想アプライアンスを Cloud Storage にアップロードします。
Cloud Storage から Compute Engine に OVF ファイルをインポートするには、
gcloud compute instances import
コマンドを使用します。ディレクトリに存在する OVF ファイルが 1 つだけの場合は、記述子ファイルのパスまたは OVF ファイルを含むディレクトリのパスを指定します。
記述子ファイルのパスを使用して OVF ファイルをインポートするには、次のコマンドを実行します。
gcloud compute instances import VM_NAME \ --source-uri=gs:PATH_TO_OVF_FILE
ディレクトリ パスを使用して OVF ファイルをインポートするには、次のコマンドを実行します。
gcloud compute instances import VM_NAME \ --source-uri=gs:PATH_TO_OVF_DIRECTORY
次のように置き換えます。
VM_NAME
: 作成するインスタンスの名前。PATH_TO_OVF_FILE
: Cloud Storage 上の OVA ファイルへのパス。PATH_TO_OVF_DIRECTORY
: Cloud Storage 上の OVA ファイルを含むディレクトリへのパス。
例
my-instance
という名前のインスタンスを作成する OVF ファイルUbuntu.ovf
をmy-ovf-directory
ディレクトリからインポートするには、次のコマンドを実行します。gcloud compute instances import my-instance \ --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
my-ovf-directory
ディレクトリからmy-instance
という名前のインスタンスを作成する OVF ファイルをインポートするには、次のコマンドを実行します。gcloud compute instances import my-instance \ --source-uri=gs://my-bucket/my-ovf-directory
OVF 記述子ファイル内のゲスト OS 情報が正しくない場合や、検出された OS をオーバーライドする場合は、
--os
フラグを追加してオペレーティング システムを指定できます。サポートされている値の一覧については、gcloud compute instances import
コマンドの--os
フラグ オプションをご覧ください。たとえば、OVF ファイルUbuntu.ovf
をインポートして、Ubuntu 16.04 を実行するmy-instance
という名前のインスタンスを作成するには、次のコマンドを実行します。gcloud compute instances import my-instance \ --os=ubuntu-1604 \ --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
REST
仮想アプライアンスを Cloud Storage に追加します。
POST
リクエストを Cloud Build API に送信します。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-instance-names=VM_NAME", "-ovf-gcs-path=SOURCE_URI", "-os=OS", "-zone=ZONE", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
次のように置き換えます。
PROJECT_ID
: OVA ファイルのインポート先にするプロジェクトのプロジェクト ID。VM_NAME
: 作成する仮想マシン インスタンスの名前(my-instance
など)。SOURCE_URI
: Cloud Storage に保管されている OVF ファイルの URI例:gs://my-bucket/my-instance.ovf
OS
: OVF ファイルのオペレーティング システム例:ubuntu-1604
--os
フラグはデフォルトで省略可能ですが、このフラグを使用して、検出された OS をオーバーライドできます。サポートされている値の一覧については、gcloud compute instances import
コマンドの--os
フラグ オプションをご覧ください。ZONE
: VM インスタンスを作成するゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。
さらに
args
値を指定できます。「Compute Engine OVF import GitHub」ページのオプション フラグ セクションをご覧ください。レスポンスの例
次のレスポンスのサンプルは、返される出力に似ています。
{ "name": "operations/build/myproject-12345/operation-1578608233418", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": "3a2055bc-ccbd-4101-9434-d376b88b8940", "status": "QUEUED", "createTime": "2019-12-30T19:06:03.968694865Z", "steps": [ { "name": "gcr.io/compute-image-tools/gce_ovf_import:release", "env": [ "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940" ], "args": [ "-instance-names=my-instance", "-ovf-gcs-path=gs://my-bucket/my-instance.ovf", "-os=ubuntu-1404", "-zone=asia-south1", "-client-id=api", "-timeout": "7056s" ] } ], "timeout": "7200s", "projectId": "myproject-12345", "logsBucket": "gs://12345.cloudbuild-logs.googleusercontent.com", "options": { "logging": "LEGACY" }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=myproject-12345", "tags": [ "gce-ovf-import" ] } } }
ビルドをモニタリングする方法はいくつかあります。
- 返される
build-id
を使用して、projects.builds.get リクエストを実行します。 - 指定された
logUrl
でホストされているログを確認します。
カスタム設定でのインポート
カスタム CPU とメモリ
gcloud
OVF ファイルで指定された CPU またはメモリ構成をオーバーライドするには、Google Cloud CLI のステップに従い、OVA ファイルをインポートするか、OVF ファイルをインポートして、--custom-cpu
フラグと --custom-memory
フラグを指定します。
例
たとえば、2 つの CPU と 2,048 MB のメモリを持つ my-instance
というインスタンスをインポートするには、次のコマンドを実行します。
gcloud compute instances import my-instance \ --source-uri=gs://my-bucket/Ubuntu.ova \ --custom-cpu=2 --custom-memory=2048MB
REST
OVF ファイルで指定された CPU またはメモリ構成をオーバーライドするには、Cloud Build API のステップに従い、OVA ファイルをインポートするか、OVF ファイルをインポートして、-machine-type
引数を指定します。この -machine-type
は、使用する、事前定義またはカスタム マシンタイプです。
例
たとえば、2 個の CPU と 2,048 MB のメモリを持つ my-instance
というインスタンスをインポートするには、次のリクエストを使用します。PROJECT_ID
は実際のプロジェクト ID に置き換えます。
POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-instance-names=my-instance", "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova", "-machine-type=custom-2-2048", "-zone=asia-south1", "-client-id=api", "-timeout=7056s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
カスタム ネットワーク
カスタム ネットワークは、イメージをインポートするプロジェクトと同じプロジェクトで定義する必要があります。
gcloud
カスタム ネットワークを使用するには、Google Cloud CLI のステップに従って、OVA ファイルをインポートするか、OVF ファイルをインポートして、--network
フラグを指定します。
ネットワークがカスタム サブネット モードで構成されている場合は、--subnet
フラグと --zone
フラグも指定する必要があります。
例 1 - カスタム ネットワークを使用する
たとえば、次のようなプロパティが設定されているとします。
- VM 名:
my-instance
- ネットワーク:
custom-vpc-network
- サブネット:
company-vpc-us-east1-c
- ゾーン:
us-east1-c
次のコマンドを実行して、上記のプロパティを持つインスタンスをインポートします。SERVICE_PROJECT_ID
は、仮想アプライアンスのインポート先となるプロジェクトの ID に置き換えます。
gcloud compute instances import my-instance \ --source-uri=gs://my-bucket/Ubuntu.ova \ --project SERVICE_PROJECT_ID \ --network custom-vpc-network \ --subnet company-vpc-us-east1-c \ --zone us-east1-c
例 2 - カスタム ネットワーク(共有 VPC)を使用する
たとえば、次のようなプロパティが設定されているとします。
- VM 名:
my-instance-2
- ネットワーク:
my-shared-vpc
- サブネット:
my-shared-subnet
- ゾーン:
us-east1-c
上記のプロパティを持つ VM をインポートするには、次の手順を行います。
Cloud Build サービス アカウントに
compute.networkUser
ロールを付与します。詳細については、Cloud Build サービス アカウントに必要なロールを付与するをご覧ください。VM をインポートします。
gcloud compute instances import my-instance-2 \ --source-uri gs://my-bucket/Ubuntu.ova \ --project SERVICE_PROJECT_ID \ --network projects/HOST_PROJECT_ID/global/networks/my-shared-vpc \ --subnet projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/my-shared-subnet --zone us-east1-c
次のように置き換えます。
SERVICE_PROJECT_ID
: 仮想アプライアンスをインポートするプロジェクトの IDHOST_PROJECT_ID
: 共有 VPC が配置されているプロジェクトの ID
REST
カスタム ネットワークを使用するには、Cloud Build API のステップに従って、OVA ファイルをインポートするか、OVF ファイルをインポートして、-network
引数を指定します。ネットワークがカスタム サブネット モードで構成されている場合は、-subnet
引数と -zone
引数も指定する必要があります。
例 - カスタム ネットワークを使用する
たとえば、次のようなプロパティが設定されているとします。
- VM 名:
my-instance
- ネットワーク:
custom-vpc-network
- サブネット:
company-vpc-us-east1-c
- ゾーン:
us-east1-c
以下の POST
リクエストを作成して、上記のプロパティを持つインスタンスをインポートします。SERVICE_PROJECT_ID
は、仮想アプライアンスのインポート先となるプロジェクトの ID に置き換えます。
POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-instance-names=my-instance", "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova", "-zone=us-east1-c", "-network=custom-vpc-network", "-subnet=company-vpc-us-east1-c", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
例 2 - カスタム ネットワーク(共有 VPC)を使用する
たとえば、次のようなプロパティが設定されているとします。
- VM 名:
my-instance-2
- ネットワーク:
my-shared-vpc
- サブネット:
my-shared-subnet
- ゾーン:
us-east1-c
上記のプロパティを持つ VM をインポートするには、次の手順を行います。
Cloud Build サービス アカウントに
compute.networkUser
ロールを付与します。詳細については、Cloud Build サービス アカウントに必要なロールを付与するをご覧ください。次の
POST
リクエストを作成して VM をインポートします。POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-instance-names=my-instance-2", "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova", "-zone=us-east1-c", "-network=projects/HOST_PROJECT_ID/global/networks/my-shared-vpc", "-subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/my-shared-subnet", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
次のように置き換えます。
SERVICE_PROJECT_ID
: 仮想アプライアンスをインポートするプロジェクトの ID。HOST_PROJECT_ID
: 共有 VPC が配置されているプロジェクトの ID。
外部 IP アドレスを許可しないネットワークを使用した VM のインポート
外部 IP アドレスを許可しないネットワークを使用して VM をインポートする手順は次のとおりです。
仮想アプライアンスを Cloud Storage に追加します。
インポート プロセスを行うには、VM のオペレーティング システムにパッケージ マネージャーがインストールされている必要があります。これらのパッケージ マネージャーでは、Google Cloud の外部にあるパッケージ リポジトリにリクエストを送信する場合があります。これらの更新へのアクセスを許可するには、Cloud NAT を構成する必要があります。詳細については、Cloud Router を使用した NAT 構成の作成をご覧ください。
限定公開の Google アクセスを構成します。詳しい手順については、限定公開の Google アクセスを構成するをご覧ください。
Google Cloud CLI または REST を使用して VM をインポートします。
VM が仮想アプライアンスから作成されると、プロジェクトに一時的な VM が作成されます。これらの一時的な VM に外部 IP アドレスが割り当てられないようにするには、追加のフラグまたは引数を指定する必要があります。
詳細については、次のタブをクリックしてください。
gcloud
Cloud Storage から Compute Engine に仮想アプライアンスをインポートするには、--no-address
フラグを指定して gcloud compute instances import
コマンドを使用します。
gcloud compute instances import VM_NAME \ --source-uri=SOURCE_URI \ --zone=ZONE \ --no-address
次のように置き換えます。
VM_NAME
: 作成するインスタンスの名前。SOURCE_URI
: Cloud Storage 上にある OVA または OVF ファイルの URI。例:gs://my-bucket/Ubuntu.ova
ZONE
: 仮想アプライアンスを作成するゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。
REST
Cloud Build API で外部 IP のオーバーライドを使用すると、外部 IP を持たない VM をインポートできます。
OVF ファイルで指定された外部 IP の設定をオーバーライドするには、Cloud Build API のステップに従って、OVA ファイルをインポートするか、OVF ファイルをインポートして、-no-external-ip
引数を指定します。
POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-instance-names=VM_NAME", "-ovf-gcs-path=SOURCE_FILE", "-no-external-ip", "-zone=ZONE", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
次のように置き換えます。
PROJECT_ID
: イメージをインポートするプロジェクトのプロジェクト ID。VM_NAME
: 作成する VM の名前。SOURCE_FILE
: Cloud Storage 内のイメージの URI。例:gs://my-bucket/Ubuntu.ova
ZONE
: イメージを作成するゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。
UEFI ブートローダーによる OVA ファイルのインポート
gcloud
インポートで UEFI ブートを強制的に使用するには、gcloud compute instances import
コマンドを使います。
gcloud compute instances import VM_NAME \ --source-uri=SOURCE_URI \ --guest-os-features=UEFI_COMPATIBLE
次のように置き換えます。
VM_NAME
: 作成する VM の名前SOURCE_URI
: Cloud Storage 上にある OVA または OVF ファイルの URI。例:gs://my-bucket/Ubuntu.ova
REST
Cloud Build API を使用して -uefi-compatible
引数を指定すると、UEFI ブートローダーの OVA ファイルをインポートできます。
仮想アプライアンスを Cloud Storage にアップロードします。
API で、Cloud Build API に対する
POST
リクエストを作成します。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-instance-names=VM_NAME", "-ovf-gcs-path=SOURCE_URI", "-uefi-compatible", "-zone=ZONE", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
次のように置き換えます。
PROJECT_ID
: OVA ファイルのインポート先にするプロジェクトのプロジェクト ID。VM_NAME
: 作成する仮想マシン インスタンスの名前(my-instance
など)。SOURCE_URI
: Cloud Storage に保管されている OVA ファイルの URI例:gs://my-bucket/my-instance.ova
ZONE
: VM インスタンスを作成するゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。
カスタム サービス アカウントを使用した仮想アプライアンスのインポート
仮想アプライアンスのインポート時には、一時的な仮想マシン(VM)インスタンスがプロジェクトに作成されます。これらの一時的な VM 上のインポート ツールには認証が必要です。
サービス アカウントは VM に接続されている ID です。サービス アカウントのアクセス トークンは、インスタンス メタデータ サーバーからアクセスでき、VM 上のインポート ツールの認証に使用できます。
デフォルトでは、インポート プロセスでデフォルトの Compute Engine サービス アカウントが使用されます。ただし、プロジェクトでデフォルトの Compute Engine サービス アカウントが無効になっている場合や、カスタム Compute Engine サービス アカウントを使用する場合は、サービス アカウントを作成してインポート プロセスで指定する必要があります。
gcloud
仮想アプライアンスを Cloud Storage に追加します。
サービス アカウントを作成して最小限のロールを割り当てます。サービス アカウントの作成に関する詳細については、サービス アカウントの作成と管理をご覧ください。
少なくとも、指定した Compute Engine サービス アカウントには次のロールが割り当てられている必要があります。
roles/compute.storageAdmin
roles/storage.objectViewer
これらの最低限必要なロールは、
--compute-service-account
フラグで指定されるサービス アカウントに必要です。詳細については、Compute Engine サービス アカウントに必要なロールを付与するをご覧ください。gcloud compute instances import
コマンドを使用して、仮想アプライアンスをインポートします。gcloud compute instances import VM_NAME \ --source-uri=SOURCE_URI \ --zone=ZONE \ --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=SCOPES
次のように置き換えます。
VM_NAME
: 作成するインスタンスの名前。SOURCE_URI
: Cloud Storage 上にある OVA または OVF ファイルの URI。例:gs://my-bucket/Ubuntu.ova
ZONE
: 仮想アプライアンスを作成するゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。TEMP_SERVICE_ACCOUNT_EMAIL
: 前の手順で作成したカスタム サービス アカウントに関連付けられているメールアドレス。このサービス アカウントは一時的な VM によって使用されます。指定しない場合、VM はデフォルトの Compute Engine サービス アカウントを使用します。SERVICE_ACCOUNT_EMAIL
: インポート プロセスで作成される VM に接続されるカスタム サービス アカウントに関連付けられたメールアドレス。このサービス アカウントには権限の制限がないため、必要に応じてカスタマイズできます。指定しない場合は、デフォルトの Compute Engine サービス アカウントが VM に接続されます。SCOPES
:--service-account
オプションのアクセスレベルを指定します。指定しない場合、デフォルトのスコープが使用されます。詳細については、--scopes
フラグをご覧ください。
REST
仮想アプライアンスを Cloud Storage に追加します。
サービス アカウントを作成して最小限のロールを割り当てます。サービス アカウントの作成に関する詳細については、サービス アカウントの作成と管理をご覧ください。
少なくとも、指定した Compute Engine サービス アカウントには次のロールが割り当てられている必要があります。
roles/compute.storageAdmin
roles/storage.objectViewer
これらの最低限必要なロールは、
-compute-service-account
引数で指定されるサービス アカウントに必要です。詳細については、Compute Engine サービス アカウントに必要なロールを付与するをご覧ください。API で、Cloud Build API に対する
POST
リクエストを作成します。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-instance-names=VM_NAME", "-ovf-gcs-path=SOURCE_FILE", "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL", "-service-account=SERVICE_ACCOUNT_EMAIL", "-zone=ZONE", "-scopes=SCOPES", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-ovf-import" ] }
次のように置き換えます。
PROJECT_ID
: イメージをインポートするプロジェクトのプロジェクト ID。VM_NAME
: 作成する VM の名前。SOURCE_FILE
: Cloud Storage 内のイメージの URI。例:gs://my-bucket/Ubuntu.ova
ZONE
: イメージを作成するゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。TEMP_SERVICE_ACCOUNT_EMAIL
: 前の手順で作成したカスタム サービス アカウントに関連付けられているメールアドレス。このサービス アカウントは一時的な VM によって使用されます。指定しない場合、VM はデフォルトの Compute Engine サービス アカウントを使用します。SERVICE_ACCOUNT_EMAIL
: インポート プロセスで作成される VM に接続されるカスタム サービス アカウントに関連付けられたメールアドレス。このサービス アカウントには権限の制限がないため、必要に応じてカスタマイズできます。指定しない場合は、デフォルトの Compute Engine サービス アカウントが VM に接続されます。SCOPES
:-service-account
オプションのアクセスレベルを指定します。指定しない場合、デフォルトのスコープが使用されます。詳細については、--scopes
フラグをご覧ください。