仮想アプライアンスは、仮想マシン(VM)インスタンスのディスク イメージとハードウェア構成を含むパッケージです。
広く使用されている仮想アプライアンスの形式は OVF 形式です。仮想アプライアンスを OVF 形式でパッケージ化すると、OVF パッケージが生成されます。OVF パッケージは、.ovf
記述子ファイルや、ディスクなどの他のリソースのコレクションを格納するフォルダです。OVF パッケージを 1 つのファイルにアーカイブしたものを OVA ファイルといいます。
OVF パッケージまたは OVA 単一ファイルのどちらにある場合でも、OVF 形式の VM を Compute Engine にインポートできます。インポート方法の選択で、仮想アプライアンスの使用がユースケースに最適かどうか判断してください。
仮想アプライアンスをインポートすると、記述子ファイルに保存されている情報に基づいて Compute Engine に VM が作成され、起動します。
Compute Engine では、次のように OVA ファイルまたは OVF ファイルをインポートできます。
- 仮想アプライアンスをインスタンスとしてインポートします。OVA ファイルのインポートと OVF ファイルのインポートをご覧ください。
- 仮想アプライアンスをマシンイメージとしてインポートします。仮想アプライアンスからマシンイメージをインポートするをご覧ください。
始める前に
- このガイドのコマンドラインの例を使用する場合、以下を行ってください。
- gcloud コマンドライン ツールの最新バージョンをインストールするか、最新バージョンに更新します。
- デフォルトのリージョンとゾーンを設定します。
- このガイドの API の例を使用する場合、API アクセスを設定します。
- 仮想アプライアンスをインポートするプロジェクトに信頼できるイメージのポリシーが定義されている場合は、パブリッシャーの許可リストに
projects/compute-image-tools
を追加します。 - 別のプロジェクトから仮想アプライアンスをインポートする場合は、プロジェクト間でのインポートをご覧ください。
Cloud Build API を有効にする
仮想アプライアンス インポート ツールでは Cloud Build を使用します。
ほとんどの場合、gcloud compute instances import
はこれらの権限を Cloud Build サービス アカウントに付与しようとします。ただし、これらの権限を手動で付与して、必要な権限が有効になるようにすることもできます。
Console
Cloud Build API を有効にします。
Console から Cloud Build API を有効にすると、Compute Engine は Cloud Build サービス アカウントに次のロールを付与し、Cloud Build サービスが Compute Engine にインスタンスをインポートできるようにします。
roles/iam.serviceAccountTokenCreator
roles/compute.admin
roles/iam.serviceAccountUser
インポート ツールでは、デフォルトの Compute Engine サービス アカウントも使用されます。デフォルトで、Compute Engine サービス アカウントには IAM プロジェクト編集者のロールが付与されています。このロールを削除すると、インポート プロセスが失敗することがあります。役割をサービス アカウントに再び追加するには、アクセス権の付与をご覧ください。Compute Engine のデフォルトのサービス アカウントについて詳しくは、Compute Engine のデフォルトのサービス アカウントをご覧ください。
gcloud
gcloud
コマンドライン ツールを使用して Cloud Build サービスを設定する手順は次のとおりです。
Cloud Build を有効にします。
gcloud services enable cloudbuild.googleapis.com
インポート ツールでは、デフォルトの Compute Engine サービス アカウントも使用されます。デフォルトで、Compute Engine サービス アカウントには IAM プロジェクト編集者のロールが付与されています。このロールを削除すると、インポート プロセスが失敗することがあります。役割をサービス アカウントに再び追加するには、アクセス権の付与をご覧ください。Compute Engine のデフォルトのサービス アカウントについて詳しくは、Compute Engine のデフォルトのサービス アカウントをご覧ください。
Cloud Build API のサービス アカウントに
compute.admin
役割を追加します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \ --role roles/compute.admin
Cloud Build API のサービス アカウントに
iam.serviceAccountUser
役割を追加します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \ --role roles/iam.serviceAccountUser
Cloud Build API のサービス アカウントに
iam.serviceAccountTokenCreator
役割を追加します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \ --role roles/iam.serviceAccountTokenCreator
以下を置き換えます。
要件
ソース 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 ファイルの最初のディスクは起動可能にする必要があります。
インポート ツールでインポートされる構成
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 ライセンス アプライアンスとしてインポートするには、[--os]
フラグに適切な BYOL 値を指定して、gcloud compute instances import
コマンドを実行します。
プロジェクト間でのインポート
- ソース プロジェクト: 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 サービス アカウント: このサービス アカウントの形式は
仮想アプライアンスのインポート
仮想アプライアンスは、gcloud
コマンドライン ツールまたは Cloud Build API を使用してインポートできます。
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
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
API
仮想アプライアンスを 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", "-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 に保管されている OVA ファイルの URI例:gs://my-bucket/my-instance.ova
OS
: OVA ファイルのオペレーティング システム(ubuntu-1604
など)。このフラグはデフォルトではオプションですが、必要になる場合もあります。このフラグを指定することをおすすめします。サポートされている値の一覧については、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.ova", "-os=rhel-6", "-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/gcr/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
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
API
仮想アプライアンスを 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", "-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
など)。このフラグはデフォルトではオプションですが、必要になる場合もあります。このフラグを指定することをおすすめします。サポートされている値の一覧については、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/gcr/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=myproject-12345", "tags": [ "gce-ovf-import" ] } } }
ビルドをモニタリングする方法はいくつかあります。
- 返される
build-id
を使用して、projects.builds.get リクエストを実行します。 - 指定された
logUrl
でホストされているログを確認します。
カスタム設定でのインポート
カスタム CPU とメモリ
gcloud
OVF ファイルで指定された CPU またはメモリ構成をオーバーライドするには、gcloud
コマンドライン ツールのステップに従い、OVA ファイルをインポートするか、OVF ファイルをインポートして、--custom-cpu
フラグと --custom-memory
フラグを指定します。
例
たとえば、Ubuntu 1404 を実行し、2 つの CPU と 2,048 MB のメモリを持つ my-instance
という名前のインスタンスをインポートするには、次のコマンドを実行します。
gcloud compute instances import my-instance \ --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \ --custom-cpu=2 --custom-memory=2048MB
API
OVF ファイルで指定された CPU またはメモリ構成をオーバーライドするには、Cloud Build API のステップに従い、OVA ファイルをインポートするか、OVF ファイルをインポートして、-machine-type
引数を指定します。この -machine-type
は、使用する、事前定義またはカスタム マシンタイプです。
例
たとえば、Ubuntu 1404 を実行し、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", "-os=ubuntu-1404", "-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
カスタム ネットワークを使用するには、gcloud
コマンドライン ツールのステップに従って、OVA ファイルをインポートするか、OVF ファイルをインポートし、--network
フラグを指定します。ネットワークがカスタム サブネット モードで構成されている場合は、--subnet
フラグと --zone
フラグも指定する必要があります。
例 1 - カスタム ネットワークを使用する
たとえば、次のようなプロパティが設定されているとします。
- VM 名:
my-instance
- オペレーティング システム:
Ubuntu 1404
- ネットワーク:
custom-vpc-network
- サブネット:
company-vpc-us-east1-c
- ゾーン:
us-east1-c
次のコマンドを実行して、上記のプロパティを持つインスタンスをインポートします。SERVICE_PROJECT_ID
は、仮想アプライアンスのインポート先となるプロジェクトの ID に置き換えます。
gcloud compute instances import my-instance \ --os ubuntu-1404 \ --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
- オペレーティング システム:
Ubuntu 1404
- ネットワーク:
my-shared-vpc
- サブネット:
my-shared-subnet
- ゾーン:
us-east1-c
上記のプロパティを持つ VM をインポートするには、次の手順を行います。
Cloud Build API のサービス アカウントに
compute.networkUser
ロールを追加します。gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member serviceAccount:SERVICE_PROJECT_NUM@cloudbuild.gserviceaccount.com \ --role roles/compute.networkUser
次のように置き換えます。
HOST_PROJECT_ID
: 共有 VPC が配置されているプロジェクトの IDSERVICE_PROJECT_NUM
: 仮想アプライアンスをインポートするプロジェクトのプロジェクト番号
VM をインポートします。
gcloud compute instances import my-instance-2 \ --os ubuntu-1404 \ --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
API
カスタム ネットワークを使用するには、Cloud Build API のステップに従って、OVA ファイルをインポートするか、OVF ファイルをインポートして、-network
引数を指定します。ネットワークがカスタム サブネット モードで構成されている場合は、-subnet
引数と -zone
引数も指定する必要があります。
例 - カスタム ネットワークを使用する
たとえば、次のようなプロパティが設定されているとします。
- VM 名:
my-instance
- オペレーティング システム:
Ubuntu 1404
- ネットワーク:
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", "-os=ubuntu-1404", "-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
- オペレーティング システム:
Ubuntu 1404
- ネットワーク:
my-shared-vpc
- サブネット:
my-shared-subnet
- ゾーン:
us-east1-c
上記のプロパティを持つ VM をインポートするには、次の手順を行います。
Cloud Build API のサービス アカウントに
compute.networkUser
ロールを追加します。gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member serviceAccount:SERVICE_PROJECT_NUM@cloudbuild.gserviceaccount.com \ --role roles/compute.networkUser
次のように置き換えます。
HOST_PROJECT_ID
: 共有 VPC が配置されているプロジェクトの IDSERVICE_PROJECT_NUM
: 仮想アプライアンスをインポートするプロジェクトのプロジェクト番号
次の
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", "-os=ubuntu-1404", "-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 アクセスの構成をご覧ください。
gcloud
コマンドライン ツールまたは Cloud Build API を使用して 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 \ --os=OS \ --zone=ZONE \ --no-address
次のように置き換えます。
VM_NAME
: 作成するインスタンスの名前。SOURCE_URI
: Cloud Storage 上にある OVA または OVF ファイルの URI。例:gs://my-bucket/Ubuntu.ova
OS
: OVA ファイルのオペレーティング システム(ubuntu-1604
など)。このフラグはデフォルトではオプションですが、必要になる場合もあります。このフラグを指定することをおすすめします。サポートされている値の一覧については、gcloud compute instances import
コマンドの--os
フラグ オプションをご覧ください。ZONE
: 仮想アプライアンスを作成するゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。
API
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", "-os=OS", "-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" ] }
次のように置き換えます。
UEFI ブートローダーによる OVA ファイルのインポート
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", "-os=OS", "-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
OS
: OVA ファイルのオペレーティング システム(ubuntu-1604
など)。このフラグはデフォルトではオプションですが、必要になる場合もあります。このフラグを指定することをおすすめします。サポートされている値の一覧については、gcloud compute instances import
コマンドの--os
フラグ オプションをご覧ください。ZONE
: VM インスタンスを作成するゾーン。空のままにすると、プロジェクトのデフォルト ゾーンが使用されます。